Skip to content

Repository files navigation

Cenar Web App

Aplicación web integral para la gestión de pedidos y delivery de comidas, conectando a clientes, comercios y repartidores bajo la administración de un panel central. Desarrollada con Node.js, Express 5 y MongoDB.

Características Principales

El sistema está dividido en cuatro roles principales, cada uno con su propio portal y funcionalidades:

  • Administrador (ADMIN): Control total de la plataforma. Gestión de usuarios (clientes, comercios, repartidores), tipos de comercios y configuraciones globales (variables del sistema).
  • Cliente (CLIENT): Exploración de comercios y catálogos, gestión de direcciones de entrega, carrito de compras, checkout de pedidos, seguimiento de órdenes y lista de comercios favoritos.
  • Comercio (COMMERCE): Gestión del perfil del comercio, administración de categorías de menú, control de productos (creación, edición, imágenes) y gestión de pedidos recibidos.
  • Repartidor (DELIVERY): Visualización de pedidos disponibles, toma de órdenes para entrega y actualización del estado del pedido hasta completarlo.

Stack Tecnológico

  • Backend: Node.js, Express 5
  • Base de datos: MongoDB + Mongoose
  • Motor de Plantillas: Express Handlebars (HBS)
  • Estilos: Tailwind CSS 4
  • Autenticación: Sesiones persistentes (express-session) + encriptación con bcryptjs
  • Envío de Emails: Nodemailer (para registro, recuperación de contraseñas, notificaciones)
  • Subida de archivos: Multer (imágenes de perfil, logos de comercios, fotos de productos)
  • Seguridad y Validación: express-validator

Requisitos Previos

  • Node.js >= 20.x
  • MongoDB corriendo localmente o un cluster en MongoDB Atlas

Instalación

  1. Clona el repositorio:
git clone https://github.com/gabrielmarte-dev/cenar-web-app.git
cd cenar-web-app
  1. Instala las dependencias:
npm install
  1. Configura las variables de entorno. Copia el archivo de ejemplo y ajusta los valores necesarios:
cp .env.example .env.development

Uso y Scripts

La aplicación incluye Tailwind CSS configurado por CLI, por lo que el proceso de desarrollo compila los estilos automáticamente.

# Desarrollo completo (Inicia el servidor Node con nodemon + Tailwind CSS en modo watch simultáneamente)
npm run dev

# Solo iniciar el servidor en modo desarrollo
npm run dev:server

# Solo compilar y observar cambios de Tailwind CSS
npm run watch:css

# Construcción de estilos minimizados para producción
npm run build:css

# Iniciar en producción
npm start

Variables de Entorno (.env)

Variable Descripción
NODE_ENV Entorno de ejecución (development / production)
PORT Puerto del servidor (ej. 3000)
MONGODB_URI_DEV URI de conexión a MongoDB para desarrollo
SESSION_SECRET Clave alfanumérica secreta para firmar las cookies de sesión
EMAIL_USER / EMAIL_PASS Credenciales del servicio SMTP para envío de correos
EMAIL_HOST / EMAIL_PORT Configuración del servidor SMTP
APP_URL URL base de la aplicación (ej. http://localhost:3000)
SEED_DB Si es true, insertará los datos iniciales y el admin por defecto al arrancar
DEFAULT_ADMIN_* Credenciales y datos del administrador por defecto a crear por el seeder

Estructura del Proyecto

cenar-web-app/
├── public/                 # Archivos estáticos
│   ├── css/                # Hojas de estilo y Tailwind compilado
│   ├── img/                # Imágenes estáticas del sitio
│   ├── js/                 # Scripts del lado del cliente (carrito, menú, etc.)
│   └── uploads/            # Imágenes subidas por los usuarios
└── src/                    # Código fuente del backend
    ├── config/             # Configuraciones (DB, Mailer, Multer, Variables)
    ├── controllers/        # Lógica de las rutas agrupada por rol o entidad
    ├── middlewares/        # Middlewares (Autenticación, validación, manejo de archivos)
    ├── models/             # Esquemas y Modelos de Mongoose (Users, Orders, Products, etc.)
    ├── routes/             # Definición de rutas Express
    ├── seed/               # Script de población (seeder) de base de datos
    ├── services/           # Lógica de negocio e interacción con BD
    ├── utils/              # Utilidades, constantes y Helpers de Handlebars
    └── views/              # Plantillas HBS, layouts y componentes (partials)
        ├── admin/          # Vistas del portal administrativo
        ├── auth/           # Vistas de autenticación (login, registro, recuperar pass)
        ├── client/         # Vistas del consumidor (catálogo, carrito, direcciones)
        ├── commerce/       # Vistas del panel de comercio (productos, categorías)
        ├── delivery/       # Vistas de la app del repartidor
        ├── layouts/        # Estructuras base HTML (main, auth, admin)
        └── partials/       # Componentes reusables (navbar, alertas)

Colaboradores

Licencia

MIT

About

Aplicación web integral para la gestión de pedidos y delivery de comidas, conectando a clientes, comercios y repartidores bajo la administración de un panel central

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages