Trabajo / ERP

NEXO

Un solo ERP donde antes había nueve apps separadas. Una distribuidora de alimentos en Lima lleva ahí sus ventas, stock, finanzas, RR.HH., producción y repartos.

Mi parte
Diseñado y construido por mí. También lo alojo.
Cuándo
Junio de 2026 a hoy
Estado
En producción

Una pantalla reconstruida con datos de ejemplo. Las reales tienen los números de un cliente. Estoy preparando una demo que puedes recorrer, con una empresa inventada.

El problema

Cada área tenía su propia herramienta. Lo sé porque casi todas las hice yo: un panel para el chatbot, una herramienta para filtrar postulantes, una agenda personal, una app de actas de reunión, una app de asistencia, una app de reparto, una app de stock, un catálogo de productos y un panel de ingreso que las unía.

Cada una resolvía un problema real. Cada una tenía también su propio login, su propia lista de usuarios y su propia idea de qué es un cliente. Las ventas y el stock estaban en un ERP antiguo que nadie podía ampliar. Cuando alguien pasaba del almacén a ventas, yo le cambiaba los permisos en cada app por separado.

Lo que construí

Un login, un sistema de permisos, una base de datos. No reescribí todo de una vez. Primero salieron la estructura y el espacio personal, en junio de 2026. Después las apps antiguas entraron una por una, como módulos, mientras la gente seguía trabajando.

Los clientes y el historial de ventas llegaron del ERP antiguo por importación. Los permisos se definen por rol y por pantalla, y los maneja el administrador de la propia empresa. A mí no me escriben cuando alguien cambia de puesto.

Hay un ambiente de pruebas que se actualiza desde producción todas las noches. Nada llega a producción sin una vuelta completa en pruebas, hecha por mí, en las mismas pantallas que usa el personal.

Cómo encaja todo

  1. PersonasPersonal de oficina en el navegador, Choferes en una PWA sin conexión, Vendedores de campo en Android
  2. EntradaCaddy, TLS, un solo ingreso para todos los módulos
  3. AplicaciónNext.js, 594 rutas de API, permisos por rol y por pantalla
  4. DatosPostgres, Supabase en servidor propio, 226 migraciones, respaldo cada noche
  5. Alrededorn8n para los canales de chat y los avisos, ambiente de pruebas actualizado cada noche

Un solo VPS. La opción aburrida, a propósito: un solo lugar que respaldar, un solo lugar donde mirar cuando algo va lento.

Qué resultó

Medido quiere decir contado en el código o en el sistema. Estimado quiere decir mi propia estimación, con el supuesto al lado.
Apps separadas unidas en una9medido, plan del proyecto
Páginas320medido, nov. 2026
Rutas de API594medido, nov. 2026
Migraciones de base de datos226medido, nov. 2026
Commits en el repositorio1,338medido, nov. 2026
Líneas de TypeScriptunas 310,000medido, nov. 2026
Clientes en el CRM después de importar1,563medido, junio 2026
Personas en el reloj de asistencia75medido, set. 2026
Marcaciones al día sin papel ni hojas de cálculounas 300estimado, 75 personas, 4 momentos al día

Hecho con

  • Next.js 16
  • React 19
  • TypeScript
  • Postgres
  • Supabase (self-hosted)
  • TanStack Query
  • Zod
  • ExcelJS
  • jsPDF
  • Recharts
  • Leaflet
  • Dexie
  • Capacitor
  • Caddy
  • PM2

Cuéntame qué sale mal un martes cualquiera.

Agenda una llamada de 30 minutos

Treinta minutos, por video o por teléfono. Me describes un proceso que te cuesta tiempo. Yo pregunto y te digo con franqueza si lo automatizaría, si primero lo arreglaría o si lo dejaría como está. Sin diapositivas.

Hora de Lima, UTC-5. Respondo en un día hábil, en español, inglés o neerlandés.

Abierto a puestos remotos y a proyectos.