93db76897de8bb531c1a1f2738cd71379ccb916e
Schema (packages/database/prisma/schema.prisma): - Add SenaeCategory, B2BRequestStatus, NotificationChannel enums - Add Package fields: lengthCm, widthCm, heightCm, hasDiscrepancy, photos[], senaeCategory, senaeAuthNumber, senaeDeclarationId - Add userId field to PreAlert - Add RefreshToken model (JWT auth — Fase 1) - Add Tariff model (configurable rates: pricePerLb, insurancePct, etc.) - Add B2BRequest model (heavy cargo imports — doc §13) - Add Notification model (multi-channel: email, whatsapp, sms, push — doc §16) - Add userAgent to AuditLog API (apps/api): - Add CalculatorModule: calculates SENAE cost breakdown (flete, seguro, FODINFA, arancel, IVA) per formulas in doc §15 - Add TrackingModule: public GET /api/tracking/:id endpoint (doc §07) - Register both modules in AppModule - Add Jest config + test scripts (test, test:watch, test:cov, test:ci) Tests (80 tests, 97.45% coverage): - calculator.util.spec.ts: 35 tests — SENAE formulas, volumetric weight, 4x4 regime, tariff rates, error validation, breakdown - tracking-id.util.spec.ts: 13 tests — format, uniqueness, validation - suite-code.util.spec.ts: 13 tests — generation, parsing, address builder - health.controller.spec.ts: 5 tests — ok/degraded/timestamp - calculator.spec.ts: 8 tests — controller + service unit tests - tracking.controller.spec.ts: 9 tests — public search, 404, no sensitive data Web (apps/web): - page.tsx: Full landing page matching documentation (Hero, Services, 8 Modules, Tracking states, SENAE calculator preview, 6 Roles, Companies) - /calculadora: SENAE categories + API usage guide - /tracking: Tracking ID format + 11 states reference Seed (packages/database/prisma/seed.ts): - Creates all 6 roles (SUPER_ADMIN, ADMIN_EMPRESA, OPERADOR_BODEGA, AGENTE_ADUANERO, CLIENTE, SOPORTE) - Assigns Suite EC-00001 to demo client - Creates demo Package EC-20260506-000001 with status history - Creates demo PreAlert and B2BRequest .env.example: Added all 9 integrations from doc §18: Amazon SP-API, SENAE WebService, Stripe/PayPhone, WhatsApp Business API, SendGrid/SES, SMS/Twilio, FedEx/DHL/UPS couriers, S3/MinIO, Sentry migration.sql: Updated to reflect all new models and fields turbo.json + package.json: Added test, test:cov, test:ci tasks + db:seed script
Moraworld Imports — Software
Casillero internacional (EE.UU. → Ecuador). Monorepo con Next.js, NestJS, PostgreSQL y Redis.
Requisitos
- Node.js 20+
- pnpm 9+ (ver instalación abajo si sale
command not found) - Postgres + Redis — en Coolify (recomendado) o Docker local
Instalar pnpm (si no lo tienes)
npm install -g pnpm@9.15.0
Cierra y abre la terminal, luego:
pnpm -v # debe mostrar 9.15.x
Alternativa sin instalar global (usa npx):
npx pnpm@9.15.0 install
npx pnpm@9.15.0 dev
Desarrollo local (paso a paso)
1. Variables de entorno
cp .env.example .env
Pega DATABASE_URL y REDIS_URL de Coolify. Guía: docs/VARIABLES-COOLIFY.md
2. Infraestructura (solo si NO usas Coolify para BD)
pnpm docker:up
Levanta PostgreSQL (localhost:5432) y Redis (localhost:6379).
Si Postgres/Redis ya están en Coolify, omite este paso.
3. Instalar dependencias
pnpm install
4. Base de datos
pnpm db:generate
pnpm db:migrate
Nombre sugerido para la primera migración: init.
5. Arrancar apps
pnpm dev
| Servicio | URL |
|---|---|
| Web (Next.js) | http://localhost:3000 |
| API (NestJS) | http://localhost:3001/api/health |
| Estado | http://localhost:3000/status |
Estructura
apps/
api/ # NestJS REST API
web/ # Next.js (landing + futuro portal)
packages/
database/ # Prisma + PostgreSQL
Coolify
Ver docs/COOLIFY.md para desplegar API y Web en Coolify (Postgres/Redis como servicios del panel o externos).
Roadmap
Ver ROADMAP.md — Fase 0 en curso.
Prototipos HTML (legacy)
Los archivos index.html, portal-cliente.html, etc. en la raíz del repo son maquetas de referencia hasta completar la migración a Next.js (Fase 1).
Languages
TypeScript
60.5%
HTML
35.7%
CSS
3.6%
Dockerfile
0.2%