SaaS factory reuse

What IVPrior keeps from the FoodHub scaffold and what to prune (DOC-020).

Source: docs/architecture/DOC-020-saas-factory-reuse.md

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ó

ÁreaOrigenDestino en IVPrior
Stack ADR-001…008Cashlanedocs/adr/ (Accepted; ADR-001 enmendado: Python = motor, no API)
Plataforma ADR-018+ (genéricos)Cashlanedocs/adr/ — aislamiento de cuenta, identity, billing, help, security, DX, …
ADR-009…017Cashlane (alineados a semilla)docs/adr/ — AI-SDLC, boundaries, tests, secrets, Makefile, GitHub Flow
Development DOCsCashlanedocs/development/ (011, 016–019, 023–024, 030)
Architecture DOCsCashlanedocs/architecture/ (005, 007, 010, 015, 022)
SecurityCashlanedocs/security/DOC-029-…
UX patterns + design systemCashlane (+ 2 patrones FoodHub)docs/ux/
Specify memoryCashlane + FoodHub extras.specify/memory/ (help, changelog, coherence, audit, IAM, …)
Cursor rules factoryCashlane.cursor/rules/seed-*.mdc
Agents por rolCashlaneagents/*/AGENT.md
ChecklistsCashlane / FoodHub.specify/checklists/

Qué NO se copió (a propósito)

ExcluidoMotivo
FoodHub ADR-001…050 con numeración propiaColisiona 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/FoodHubProducto distinto; solo patrones
Prisma schema, código Nest/Next, `apps/apiweb
Visión / dominio IVPriorYa 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

  1. Antes de SaaS: V0 CLI en apps/cli/ (FEAT-001). Permitido crear/mantener apps/cli. Prohibido scaffold Nest/Next/Prisma (apps/api, apps/web, …) hasta spike SaaS producto GO.
  2. Al abrir plataforma: seguir ADR-001…008 + 018, 023, 024, 031, 036, 079/080; DOC-015 layout; DOC-017 quality gates.
  3. Vocabulario: DOC-002 (SaaS Subscriber) + DOC-003 (opciones) + seed-domain.mdc. No inventar Tenant/Organization B2B ni dominio food/cobranzas desde docs de Cashlane.
  4. Si un ADR copiado menciona “finance / mailbox / invoice”: tratarlo como plantilla de patrón; no implementar ese dominio.
  5. La presencia de apps/cli no autoriza a agentes a inventar apps/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-go 2026-09-08).
  • Podar módulos food + Prisma/OpenAPI platform-only.
  • make sync-agents si se editan rules/skills tras este import.