Este starter incluye:
- Functions con endpoints (
/psp/*,/einvoice/*,/integrations/*) y triggers (orden pagada → boleta mock + descuento inventario). - Admin (Next.js), Menú QR (Next.js), KDS (React/Vite).
- Seeds para datos demo.
- Config listo para mock:
PSP_MODE=mock,SII_ENV=mock.
- Node 20+, pnpm, Firebase CLI
- (Opcional) Flutter para POS nativo
-
Clonar y preparar entorno:
pnpm i -w
-
Configurar proyecto Firebase:
firebase use tu-proyecto pnpm -w run build
-
Variables de entorno:
- Copia
.env.examplea cada app/web según corresponda (o usa variables del sistema). - Para Functions, usa Secrets para claves sensibles:
firebase functions:secrets:set TBK_API_KEY firebase functions:secrets:set SII_CERT_PASS
- Copia
-
Desplegar:
firebase deploy --only functions
(Hosting de Next.js puede requerir adaptador; por ahora
webRendererresponde placeholder.) -
Seed de datos (en tu local con emuladores o en proyecto):
pnpm --filter tools run seed
POST /psp/pay→ procesa pago mock.POST /psp/webhook→ confirma evento PSP (mock).POST /einvoice/boleta→ emite boleta mock.POST /integrations/:provider/webhook→ entrada delivery (mock).GET /healthz,GET /version
- Conectar Admin/KDS/QR a Hosting o Next.js en Vercel y apuntar rutas de API al Cloud Function
api. - Implementar recetas reales y descuento de inventario por ítems.
- Agregar autenticación (Auth) y tokens con
tenantId,roles,branchIdspara que las reglas funcionen. - Migrar de
mockasandbox/cert→proden PSP/SII.
Nota: Este es un starter didáctico, no listo para producción. Refuerza seguridad, validaciones y despliegue CI/CD antes de operar.
Configura un usuario y asigna custom claims (tenantId, roles, branchIds) para que las reglas funcionen:
- Define una clave para la API admin:
firebase functions:secrets:set ADMIN_API_KEY
- Envía un POST a
https://REGION-PROJECT.cloudfunctions.net/api/admin/set-claimscon headerx-admin-key: <tu_clave>y body:{ "uid": "<UID>", "tenantId": "demo", "roles": ["admin"], "branchIds": ["casa-matriz"] }
- Cambia
.env:PSP_MODE=sandbox TBK_COMMERCE_CODE=597055555532 TBK_API_KEY=TEST_API_KEY
- Flujo:
POST /psp/paycon{ orderId, amount, returnUrl }→ devuelvetokenyurlde Webpay (sandbox).- Redirige al
url(en front) y luegocommitconPOST /psp/commit { token }.
- Cambia
.env:SII_ENV=cert SII_RUT_EMISOR=<tu-rut>
- El stub NO envía al SII todavía: genera estructura y rutas simuladas. Debes implementar firma/CAF/envío.
- Cuando
orders.statuscambia apaid, el trigger:- emite boleta (mock/cert stub),
- descuenta inventario según
recipesy creastock_movements.
/login→ email/clave Firebase/dashboard→ accesos/products,/inventory→ CRUDs básicos
Importante: Conecta Auth en Admin para obtener tokens con claims. En emuladores, puedes omitir claims mientras pruebas.