Café Combate
Operations monorepo for Café Combate: warehouse, CFDI invoicing, sales and production in a single ecosystem.
Contexto
Café Combate opera múltiples dominios de negocio —almacén, facturación, ventas, compras, producción y administración— que históricamente vivían en sistemas separados. El monorepo centraliza todas esas aplicaciones, sus contratos de backend y sus librerías compartidas en un único ecosistema TypeScript.
Arquitectura
El repositorio usa Yarn 4 Workspaces orquestado con Turborepo y se divide en tres grupos:
apps/*— aplicaciones independientes:auth,api,admin,warehouse,invoicing,sales,production,purchasing,payments,storesypublic.shared/*— librería de UI en React, utilidades, catálogos SAT, tipos y mocks reutilizados por todas las apps.domain_modules/*— lógica de negocio por dominio (solicitudes, clientes, facturas y dashboards de cada área).
La autenticación está centralizada y cada app se despliega de forma independiente en Heroku mediante el buildpack multi-procfile.
Stack
- React 18 + Vite como base de cada app frontend.
- React Router v7 para navegación.
- React Hook Form + Zod para formularios y validación.
- Dexie (IndexedDB) para persistencia y sincronización local en el navegador.
- Tailwind CSS para estilos.
Retos técnicos
- Facturación electrónica CFDI conforme al SAT, con manejo de IVA, IEPS e ISR y pre-facturación.
- Modelo de roles y permisos consistente entre todas las apps.
- Compartir tipos TypeScript y un único design system a lo largo de un monorepo grande sin duplicar lógica.
Resultado
Un ecosistema unificado que despliega cada app de forma independiente, manteniendo tipado, estilos y reglas de calidad centralizados.
System applications
Private (account required)