Sobre el proyecto
Chefsy es un sistema interno de gestión de pedidos diseñado para locales gastronómicos. Esta primera etapa ofrece una base funcional completa para el seguimiento de pedidos desde su creación hasta la entrega.
## Stack tecnológico
- **Next.js 14** con App Router
- **TypeScript** (código 100% tipado)
- **Tailwind CSS** para estilos utilitarios
- **React Context + useReducer** para el estado en memoria, sin librerías externas
## Funcionalidades principales
- **Dashboard**: Métricas del día y pedidos recientes
- **Gestión de pedidos**: Lista completa con filtros por estado, creación de nuevos pedidos mediante formulario
- **Vista de cadetería**: Interfaz móvil para repartidores
- **Flujo de estados**: Nuevo → En Cocina → Listo → En Reparto → Entregado, con posibilidad de cancelar desde cualquier estado activo
## Estructura del proyecto
El proyecto está organizado en rutas principales:
- `/dashboard` - Métricas y pedidos recientes
- `/pedidos` - Lista completa con filtros
- `/nuevo-pedido` - Formulario de creación
- `/cadeteria` - Vista mobile del repartidor
Los componentes se dividen en layout (Sidebar, Header), pedidos (TarjetaPedido, BadgeEstado, FormularioPedido) y dashboard (TarjetaMetrica). El estado global se maneja a través de un contexto con useReducer, y los datos de prueba se encuentran en un archivo mock.
## Cómo ejecutar
1. Instalar dependencias: `npm install`
2. Modo desarrollo: `npm run dev` (disponible en http://localhost:3000)
3. Build de producción: `npm run build` y `npm run start`
## Plan de escalado
El proyecto incluye una hoja de ruta clara para futuras etapas:
- **Etapa 2**: Persistencia con API REST o Supabase
- **Etapa 3**: Autenticación con next-auth y roles (operador, cocina, cadete)
- **Etapa 4**: Tiempo real con WebSockets o Supabase Realtime
- **Etapa 5**: Módulo de menú y productos con autocompletado
## Decisiones de arquitectura
- Uso de Route Group `(principal)` para separar el layout con sidebar del layout simple de cadetería
- `useReducer` en lugar de múltiples `useState` para centralizar la lógica
- Datos mock síncronos sin useEffect, facilitando la migración a async
- Componentes sin animaciones para priorizar funcionalidad y velocidad
- Código en español para consistencia con el equipo objetivo
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.