POS-Hamburguesas
POS con inventario y órdenes en tiempo real
01_STACK
02_DESCRIPCIÓN
Punto de venta (POS) para un negocio de hamburguesas: catálogo con recetas, inventario de ingredientes, órdenes con personalización y flujo de estados, pagos, gastos y reportes.
Stack tecnológico
Frontend: React 19 + Vite + TypeScript, TanStack Query, Zustand (persist), React Hook Form + Zod, Tailwind v4, shadcn/Base UI
Backend: NestJS 11 + Prisma 7 (adapter-pg), Passport JWT (access + refresh), bcrypt
BD/Infraestructura: PostgreSQL, monorepo con Bun workspaces
Conceptos y patrones
- Arquitectura modular por dominio (auth, catalog, inventory, orders, payments, expenses, reports)
- Prisma como capa de datos (13 modelos)
- Refresh token en cookie httpOnly + access token no persistido (buena práctica de seguridad frente a XSS)
- Guards de roles
- Descuento automático de inventario al confirmar órdenes
Notas arquitectónicas
Es el proyecto más completo que tengo. Separé backend y frontend con contratos tipados de punta a punta, y tomé la decisión de guardar el refresh token en cookie httpOnly con bcrypt para evitar XSS. Lo que más me costó fue conectar el descuento automático de inventario con el flujo de órdenes, porque cruza varios dominios (recetas, stock, ventas).
03_CONCEPTOS_Y_PATRONES
- ✓Arquitectura modular por dominio (auth, catalog, inventory, orders, payments, expenses, reports)
- ✓Prisma como capa de datos (13 modelos)
- ✓Refresh token en cookie httpOnly + access token no persistido
- ✓Guards de roles
- ✓Descuento automático de inventario al confirmar órdenes
04_COMPLEJIDAD_Y_NOTAS
Es el proyecto más completo que tengo. Separé backend y frontend con contratos tipados de punta a punta, y tomé la decisión de guardar el refresh token en cookie httpOnly con bcrypt para evitar XSS. Lo que más me costó fue conectar el descuento automático de inventario con el flujo de órdenes, porque cruza varios dominios (recetas, stock, ventas).