DOC-015: Monorepo folder structure
Estado
Accepted — 2026-08-23 · Enmienda 2026-09-08: apps/cli (motor Python) + scaffold SaaS desde FoodHub (feature/saas-scaffold-from-foodhub).
Layout objetivo. Hoy: apps/cli/ + apps/{api,web,help,docs} + packages/* (platform factory). Dominio IVPrior (opciones) en slices posteriores.
Referencias: ADR-002 · ADR-016 · ADR-024 · DOC-020.
ivprior/
├── apps/
│ ├── cli/ # Motor Python — señales / IV / options (V0; HOY)
│ ├── api/ # NestJS (ADR-001, ADR-006) — diferido
│ ├── web/ # Next.js (ADR-004) — diferido
│ ├── help/ # Help Center :3002 (ADR-079) — diferido
│ └── docs/ # Developer Docs :3003 (ADR-079) — diferido
├── packages/ # diferido hasta scaffold SaaS
│ ├── ui/
│ ├── api-contract/
│ └── shared/
├── devops/ # diferido
│ └── docker/
├── docs/
├── specs/
├── openspec/
├── agents/
├── memory/
├── scripts/ # cli-install / cli-run / cli-smoke / cli-test
├── main.py # shim → apps/cli/main.py
├── bollinger.py # shim → apps/cli/bollinger.py
├── Makefile # ADR-016 — make cli*
└── … (pnpm/turbo solo post scaffold SaaS)
Hoy: apps/cli + SaaS factory (apps/api|web|help|docs, packages/*) — spike saas-product-scaffold (closed-go).
Pendiente: podar dominio food; dominio IVPrior en Prisma/API; deploy post compra ivprior.com.
No en V1 SaaS: apps/mobile.
apps/cli (Python motor)
Home del kit IVPrior: main.py, options.py, módulos de señales/datos, listas (watchlist.txt, …), requirements.txt, GUIA.md, README.md.
make cli-install
make cli ARGS='AAPL --opciones'
make cli-smoke
make cli-test
apps/api (Nest) — diferido
Módulos por bounded context (DOC-003): identity, organization, customer, invoice, collections, inbox, classification, promise, dispute, task, dashboard, audit, integration.
Dentro de módulos con reglas:
domain/ application/ infrastructure/ presentation/
Prisma solo en infrastructure (ADR-008).
Worker: mismo codebase, entrypoint distinto (apps/api job runner) — no un segundo repo.
apps/web (Next)
app/ # routes
features/ # auth, customers, invoices, inbox, …
lib/ # api client
apps/help y apps/docs (ADR-079)
| App | Puerto | Audiencia | Fuente |
|---|---|---|---|
help | 3002 | Owner / Controller / AR specialist | apps/help/content/{en,es}/{module}/{slug}.md (ADR-080) |
docs | 3003 | humanos y agentes | docs/adr + allowlist (DOC-011, CONTRIBUTING, CHANGELOG, OpenAPI) |
No se mezclan: Help no publica ADRs; Docs no enseña a cobrar invoices.
Relación con la semilla
docs/, openspec/, .cursor/, agents/ no se mueven. El scaffolding se suma; no se reinventa la semilla.