Skip to main content

Fase 1: Scaffolding, Estructura Base y Capa Offline Base

Objetivo: Dejar el "cascarón" del sistema completamente estructurado, las rutas funcionales y las bases de datos local y remota inicializadas.


1. Track Backend (.NET 10 & Docker Compose)

[ ] Task 1.1: Inicialización de la Solución Monolítica Modular

  • Descripción: Crear la solución base en .NET 10 (MdxCloud.sln) y estructurar los subproyectos físicos que espejean los 10 dominios de negocio.
  • Detalle:
    • Crear la WebAPI núcleo (MdxCloud.API) como punto de entrada único.
    • Modularizar la lógica de negocio mediante bibliotecas de clases aisladas, una por dominio:
      • MdxCloud.Modules.Catalogos (Productos, presentaciones, unidades)
      • MdxCloud.Modules.Fiscal (Catálogos SAT, regímenes, códigos postales)
      • MdxCloud.Modules.Ventas (Clientes, pedidos, precios B2B)
      • MdxCloud.Modules.Compras (Proveedores, órdenes de compra)
      • MdxCloud.Modules.Wms (Inventario, lotes, picking FEFO, transferencias)
      • MdxCloud.Modules.Credito (Cartera, abonos FIFO, bloqueos)
      • MdxCloud.Modules.Tesoreria (Cuentas por pagar, pagos a proveedores)
      • MdxCloud.Modules.CFDI (Timbrado CFDI 4.0, integración PAC, Cloudflare R2)
      • MdxCloud.Modules.Personal (Empleados, usuarios, RBAC)
      • MdxCloud.Modules.Auditoria (Interceptor centralizado de logs JSONB)
    • Crear el proyecto compartido de contratos e interfaces: MdxCloud.Shared.

[ ] Task 1.2: Orquestación de Infraestructura Local (Docker Compose)

  • Descripción: Automatizar el levantamiento del entorno de desarrollo con los tres servicios oficiales del stack.
  • Detalle:
    • Redactar docker-compose.yml de desarrollo con tres servicios:
      • mdx-caddy: Proxy inverso Caddy 2, único con puertos públicos (80, 443, 443/udp para HTTP/3).
      • mdx-backend: API .NET 10 con expose: 8080 (sin puertos públicos al host).
      • mdx-database: PostgreSQL 16 Alpine con expose: 5432 (invisible al exterior).
    • Montar el Caddyfile como volumen de solo lectura en el contenedor mdx-caddy.
    • Definir la red interna mdx-network tipo bridge que conecta los tres contenedores.
    • Gestionar todas las contraseñas mediante variables ${DB_PASSWORD} en archivo .env (nunca en Git).

[ ] Task 1.3: Inicialización de Esquemas Físicos en Postgres (10 Dominios)

  • Descripción: Configurar e instanciar los 10 esquemas de base de datos que segmentan los dominios de negocio de MDX-Cloud.
  • Detalle:
    • Configurar las migraciones iniciales de EF Core, una por módulo.
    • Ejecutar scripts SQL para la creación física de los 10 esquemas oficiales: catalogos, fiscal, ventas, compras, wms, credito_cobranza, tesoreria, cfdi, personal, auditoria.
    • Verificar que ningún esquema tenga FKs cruzadas que no estén justificadas como red de seguridad (ver regla de aislamiento § 03.3).

[ ] Task 1.4: Definición de Contratos Base (Mocks API)

  • Descripción: Redactar los contratos JSON de red para habilitar el desarrollo paralelo.
  • Detalle:
    • Escribir las estructuras DTO (Data Transfer Objects) e interfaces en MdxCloud.Shared.
    • Configurar endpoints temporales en el WebAPI que devuelvan JSONs con datos estáticos de prueba (Mocked responses).

2. Track Frontend (React SPA & Dexie.js)

[x] Task 1.5: Inicialización del Ecosistema Frontend

  • Descripción: Crear e inicializar la Single Page Application base.
  • Detalle:
    • Instanciar el proyecto mediante Vite con el template de TypeScript.
    • Instalar dependencias esenciales de producción: dexie, dexie-react-hooks, react-router-dom, lucide-react.

[x] Task 1.6: Arquitectura de Carpetas Feature-Driven

  • Descripción: Estructurar el directorio de código bajo una arquitectura limpia orientada a características de negocio, espejando los 10 dominios del backend.
  • Detalle:
    • Mapear las 10 carpetas de dominio bajo src/features/, una por esquema de BD: catalogos/, fiscal/, ventas/, compras/, wms/, credito_cobranza/, tesoreria/, cfdi/, personal/, auditoria/.
    • Crear las carpetas transversales: src/components/ (UI atómica), src/hooks/, src/context/, src/services/, src/config/, src/layouts/, src/db/.

[x] Task 1.7: Construcción del Layout Horizontal Moderno (Navbar)

  • Descripción: Diseñar el cascarón de navegación global del portal de administración.
  • Detalle:
    • Implementar la barra superior horizontal responsiva (Navbar) con perfil de usuario y selector rápido de módulos comerciales.
    • Nota: Queda estrictamente prohibido el uso de barras de navegación verticales (Sidebars) para cumplir con el diseño corporativo premium.

[x] Task 1.8: Instanciación de Dexie.js con Convención de Nombres

  • Descripción: Crear e inicializar la capa de persistencia local en IndexedDB del navegador.
  • Detalle:
    • Crear el servicio base WmsDatabase.ts heredando de Dexie.
    • Configurar el constructor para inicializar el nombre de la BD local dinámicamente según el entorno (mdx_wms_dev o mdx_wms_prod).
    • Mapear los esquemas de tablas iniciales con el prefijo de caché: cache_productos y cache_lotes.

[ ] Task 1.9: Configuración e Inyección del Entorno PWA

  • Descripción: Configurar e inyectar el Service Worker para habilitar el comportamiento de aplicación de escritorio offline-first.
  • Detalle:
    • Instalar el paquete vite-plugin-pwa como dependencia de desarrollo.
    • Configurar vite.config.ts para registrar el Service Worker en modo de generación automática (GenerateSW).
    • Diseñar el archivo manifest.json definiendo: display: "standalone", orientation: "landscape" (optimizado para tablets) y los colores corporativos de la marca.
    • Configurar la estrategia básica de precarga de assets estáticos esenciales.