6e90f06f6d8d3ac150bc888cd80d88e1108e46e7
API:
- PackagesService: verifyPackage (discrepancia >10%), addPhotos (multer disk), generateSenaeDeclaration (DSI stub)
- PATCH /packages/:id/verify — peso real + dimensiones + detección automática de discrepancia
- POST /packages/:id/photos — upload multipart fotos (hasta 10, 10 MB c/u)
- POST /packages/:id/senae/declare — genera DSI, N° autorización SENAE, cambia estado DECLARACION_ADUANERA
- GET /packages/pending-declaration — cola de paquetes VERIFICADO para agente aduanero
- AuditLogModule: GET /audit-logs con filtros (acción, recurso, fechas, paginación)
- NotificationsModule: notifyStatusChange → crea registros EMAIL/WHATSAPP/PUSH en DB (stub dispatch)
- TariffsModule: GET/PUT /tariffs — configuración de tarifas por tenant (pricePerLb, IVA, FODINFA…)
- ProductsModule: POST /products/scan — stub extracción de producto desde URL Amazon/eBay/Walmart
- StorageModule: saveFile/deleteFile con disco local (S3-ready)
- main.ts: NestExpressApplication + useStaticAssets('/uploads')
- Dirección bodega: de hardcoded a env vars (WAREHOUSE_ADDRESS_*)
Web:
- /bodega/verificacion — formulario real: peso real, dims, fotos, detección discrepancia, notificación
- /bodega/despacho — lista paquetes DECLARACION_ADUANERA → despacha a EN_TRANSITO_ECUADOR
- /bodega/declaraciones — cola SENAE: auto-detecta categoría 4×4, genera DSI por paquete
- /bodega/layout — agrega enlace Declaraciones SENAE, corrige ALLOWED roles
- /admin/tarifas — CRUD real: edita pricePerLb, IVA, FODINFA, límites 4×4; preview fórmulas
- /admin/auditoria — tabla paginada con filtros desde GET /audit-logs
- /portal/pre-alerta — tabs URL-scan / Manual, upload de factura, campos correctos
- /casillero/como-usar — timeline 9 pasos con dirección NJ y CTA
- /carga-pesada/como-funciona — flujo B2B 5 pasos, servicios incluidos
- /carga-pesada/inen — 6 categorías reguladas, callout de advertencia, proceso de asistencia
- api.ts: verify, uploadPhotos, senaeDeclare, pendingDeclaration, tariffs, auditLogs, products.scan
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%