DOC-020: SaaS factory reuse (Cashlane / FoodHub → IVPrior)
Estado
Accepted — 2026-09-08
Propósito
IVPrior reutiliza la fábrica SaaS (patrones, ADRs de plataforma, DX, UI admin, help/docs, reglas de agentes) ya probada en Cashlane y FoodHub/MercoraHub, sin copiar dominio de cobranzas ni de restaurantes.
Spike de stack: docs/spikes/saas-stack-reuse/spike.md (closed-go).
Qué se copió
| Área | Origen | Destino en IVPrior |
|---|---|---|
| Stack ADR-001…008 | Cashlane | docs/adr/ (Accepted; ADR-001 enmendado: Python = motor, no API) |
| Plataforma ADR-018+ (genéricos) | Cashlane | docs/adr/ — aislamiento de cuenta, identity, billing, help, security, DX, … |
| ADR-009…017 | Cashlane (alineados a semilla) | docs/adr/ — AI-SDLC, boundaries, tests, secrets, Makefile, GitHub Flow |
| Development DOCs | Cashlane | docs/development/ (011, 016–019, 023–024, 030) |
| Architecture DOCs | Cashlane | docs/architecture/ (005, 007, 010, 015, 022) |
| Security | Cashlane | docs/security/DOC-029-… |
| UX patterns + design system | Cashlane (+ 2 patrones FoodHub) | docs/ux/ |
| Specify memory | Cashlane + FoodHub extras | .specify/memory/ (help, changelog, coherence, audit, IAM, …) |
| Cursor rules factory | Cashlane | .cursor/rules/seed-*.mdc |
| Agents por rol | Cashlane | agents/*/AGENT.md |
| Checklists | Cashlane / FoodHub | .specify/checklists/ |
Qué NO se copió (a propósito)
| Excluido | Motivo |
|---|---|
| FoodHub ADR-001…050 con numeración propia | Colisiona con semilla; fábrica = Cashlane |
| ADRs dominio Cashlane (inbox AR, promises, invoice SM, sequences, mailbox OAuth, …) | No aplican a opciones |
| ADRs dominio FoodHub (órdenes, delivery, menú, inventory, Stripe Connect pedidos, …) | Vertical food |
| Pantallas S-xxx de Cashlane/FoodHub | Producto distinto; solo patrones |
| Prisma schema, código Nest/Next, `apps/api | web |
| Visión / dominio IVPrior | Ya propios (DOC-001, DOC-002, DOC-003, seed-domain) |
Capas de runtime
SaaS (TypeScript factory) Motor (Python)
Nest + Next + Postgres ←→ apps/cli (V0) / future worker
auth · orgs · billing signals · IV · options
Cómo usar estos docs
- Antes de SaaS: V0 CLI en
apps/cli/(FEAT-001). Permitido crear/mantenerapps/cli. Prohibido scaffold Nest/Next/Prisma (apps/api,apps/web, …) hasta spike SaaS producto GO. - Al abrir plataforma: seguir ADR-001…008 + 018, 023, 024, 031, 036, 079/080; DOC-015 layout; DOC-017 quality gates.
- Vocabulario: DOC-002 (SaaS Subscriber) + DOC-003 (opciones) +
seed-domain.mdc. No inventar Tenant/Organization B2B ni dominio food/cobranzas desde docs de Cashlane. - Si un ADR copiado menciona “finance / mailbox / invoice”: tratarlo como plantilla de patrón; no implementar ese dominio.
- La presencia de
apps/clino autoriza a agentes a inventarapps/web/apps/api.
Índice ADR
Ver docs/development/DOC-018-adr-index.md (rebranded; puede citar números de Cashlane — validar contra docs/adr/ local).
Follow-ups
- Revisar a mano ADRs 022/038/039 (jobs/notifications/AI) cuando exista dominio IVPrior SaaS.
- Spike SaaS producto GO:
docs/spikes/saas-product-scaffold/spike.md(closed-go2026-09-08). - Podar módulos food + Prisma/OpenAPI platform-only.
make sync-agentssi se editan rules/skills tras este import.