V.NÚÑEZ / 2026_INDEX
← Volver al índice
[ PRJ.ID / 006 ] — Negocio / POS

POS-Hamburguesas

POS con inventario y órdenes en tiempo real

SeniorMaintenanceNegocio / POS
Ver en GitHub →

01_STACK

Frontend
React 19ViteTypeScriptTanStack QueryZustand (persist)React Hook Form + ZodTailwind v4shadcn/Base UI
Backend
NestJS 11Prisma 7 (adapter-pg)Passport JWT (access + refresh)bcrypt
Datos / Infraestructura
PostgreSQLMonorepo con Bun workspaces

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

Complejidad
Alta
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).

¿Hablamos del próximo sistema?