--- id: EPIC-MCH-001 type: Epic title: "MCH-001: Infraestructura Base" code: MCH-001 status: Completado phase: 1 priority: P0 story_points: 8 created_at: 2026-01-04 updated_at: 2026-01-17 simco_version: "4.0.1" dependencies: blocks: ["MCH-002", "MCH-003", "MCH-010"] depends_on: [] --- # MCH-001: Infraestructura Base ## Metadata - **Codigo:** MCH-001 - **Fase:** 1 - MVP Core - **Prioridad:** P0 - **Estado:** Completado - **Story Points:** 8 - **Fecha inicio:** 2026-01-04 - **Fecha fin:** 2026-01-05 ## Descripcion Setup inicial del proyecto MiChangarrito incluyendo estructura monorepo, configuracion de base de datos PostgreSQL multi-tenant, pipelines CI/CD, y entornos de desarrollo. ## Objetivos 1. Establecer estructura de proyecto monorepo 2. Configurar PostgreSQL con multi-tenant (RLS) 3. Setup de entornos de desarrollo 4. Configurar CI/CD basico ## Alcance ### Incluido - Estructura de carpetas monorepo (apps/, database/, docs/) - PostgreSQL con schemas separados - Scripts de recreacion de BD - Docker Compose para desarrollo - GitHub Actions basico ### Excluido - Deployment a produccion - Kubernetes (futuro) - Monitoring avanzado ## Arquitectura ``` michangarrito/ ├── apps/ │ ├── backend/ # NestJS API │ ├── web/ # React Dashboard │ ├── mobile/ # Expo App │ ├── mcp-server/ # Gateway LLM │ └── whatsapp-service/ # Bot WhatsApp ├── database/ │ ├── schemas/ # DDL files │ ├── seeds/ # Data inicial │ └── *.sh # Scripts ├── docs/ └── orchestration/ ``` ## Entregables | Entregable | Estado | Archivo/Ubicacion | |------------|--------|-------------------| | Estructura monorepo | Completado | `projects/michangarrito/` | | DDL base PostgreSQL | Completado | `database/schemas/00-02.sql` | | Scripts BD | Completado | `database/*.sh` | | Docker Compose | Completado | `docker-compose.yml` | ## Dependencias ### Depende de - Ninguna (epica inicial) ### Bloquea a - MCH-002 (Auth) - MCH-003 (Productos) - MCH-010 (MCP Server) ## Criterios de Aceptacion - [x] Estructura de carpetas creada - [x] PostgreSQL ejecutandose con schemas - [x] Script drop-and-recreate funcional - [x] Extensiones uuid-ossp, pgcrypto habilitadas - [x] Funcion current_tenant_id() operativa ## Notas Tecnicas - **Puerto PostgreSQL:** 5432 - **Puerto Redis:** 6379 - **Base de datos:** michangarrito_platform - **Multi-tenant:** Via tenant_id + RLS --- ## Historias de Usuario ### MCH-US-001: Estructura Monorepo **Como** desarrollador **Quiero** una estructura de proyecto monorepo bien organizada **Para** poder trabajar eficientemente en multiples apps del mismo proyecto **Story Points:** 3 **Criterios de Aceptacion:** - [CA-001-1] ✅ Carpeta apps/ con backend, web, mobile, mcp-server, whatsapp-service - [CA-001-2] ✅ Carpeta database/ con schemas, seeds, scripts - [CA-001-3] ✅ Carpeta docs/ con documentacion estructurada - [CA-001-4] ✅ Carpeta orchestration/ con inventarios y trazas - [CA-001-5] ✅ Archivo .env.example con variables requeridas **Tareas:** | ID | Tarea | Tipo | Estado | |----|-------|------|--------| | MCH-TT-001-01 | Crear estructura de carpetas | Setup | Completado | | MCH-TT-001-02 | Configurar .gitignore | Setup | Completado | | MCH-TT-001-03 | Crear .env.example | Setup | Completado | --- ### MCH-US-002: Base de Datos Multi-Tenant **Como** arquitecto **Quiero** PostgreSQL configurado con multi-tenant via RLS **Para** asegurar aislamiento de datos entre negocios **Story Points:** 3 **Criterios de Aceptacion:** - [CA-002-1] ✅ PostgreSQL 16+ ejecutandose en puerto 5432 - [CA-002-2] ✅ Extensiones uuid-ossp, pgcrypto habilitadas - [CA-002-3] ✅ 11 schemas creados (public, auth, catalog, sales, etc.) - [CA-002-4] ✅ RLS habilitado en tablas con tenant_id - [CA-002-5] ✅ Funcion current_tenant_id() operativa **Tareas:** | ID | Tarea | Tipo | Estado | |----|-------|------|--------| | MCH-TT-002-01 | DDL 00-extensions.sql | DDL | Completado | | MCH-TT-002-02 | DDL 01-schemas.sql | DDL | Completado | | MCH-TT-002-03 | DDL 02-functions.sql | DDL | Completado | | MCH-TT-002-04 | DDL 03-public.sql (tenants) | DDL | Completado | --- ### MCH-US-003: Scripts de Base de Datos **Como** DevOps **Quiero** scripts para recrear la BD facilmente **Para** poder resetear el ambiente de desarrollo rapidamente **Story Points:** 2 **Criterios de Aceptacion:** - [CA-003-1] ✅ Script create-database.sh funcional - [CA-003-2] ✅ Script recreate-database.sh funcional - [CA-003-3] ✅ Scripts ejecutables desde cualquier directorio **Tareas:** | ID | Tarea | Tipo | Estado | |----|-------|------|--------| | MCH-TT-003-01 | Crear script create-database.sh | DevOps | Completado | | MCH-TT-003-02 | Crear script recreate-database.sh | DevOps | Completado | | MCH-TT-003-03 | Documentar uso de scripts | Docs | Completado | --- ## Resumen de Story Points | Historia | SP | Estado | |----------|-----|--------| | MCH-US-001: Estructura Monorepo | 3 | Completado | | MCH-US-002: Base de Datos Multi-Tenant | 3 | Completado | | MCH-US-003: Scripts de Base de Datos | 2 | Completado | | **Total** | **8** | **100%** | --- **Ultima actualizacion:** 2026-01-17 **Estandarizado por:** Validacion Documental MCH-DOC-VAL-2026-01-17