Back to portfolio
db
2025 - Now·Active

Initial CRM

Diseñador e Ingeniero Principal

Un CRM self-hosted, API-first, construido desde cero para operar el flujo comercial de Initial Infrastructures. Single-tenant por diseño, single-binary para desplegar, y pensado para recibir su data de sistemas upstream (Crawlswarm entre otros) en lugar de ser un lugar donde los humanos la pegan a mano.

Qué gestiona: empresas, contactos, leads, deals, pipelines personalizables con etapas, registro de actividades, tags y un dashboard con Recharts. Tableros de pipeline en drag-and-drop con dnd-kit para que el equipo comercial mueva oportunidades por gesto, no por formulario.

API-first: endpoints de ingestión dedicados para imports en batch (empresas, contactos, resultados de scraping) y una API de integración con scopes (crm.companies:read, crm.contacts:write, etc.) para flujos machine-to-machine. Crawlswarm empuja sus leads enriquecidos directamente al CRM vía API key, sin paso de exportación manual.

Stack: React 18 + TypeScript + Vite + Tailwind en el frontend (Recharts para gráficos, dnd-kit para drag-and-drop, primitivas Radix para popovers y menús). Express 4 + TypeScript en el backend con better-sqlite3 para la persistencia - SQLite elegido a propósito por la simplicidad de un único archivo para respaldar y migrar.

Despliegue: un solo proceso Node detrás de Caddy (HTTPS auto) o Nginx, supervisado por systemd. El backend también sirve el frontend compilado en producción, así un VPS, un servicio, un reverse proxy es todo lo necesario.

Estado: en producción, opera el pipeline comercial de Initial Infrastructures. Acceso detrás de autenticación en el dominio de la empresa.

Vista pipeline — drag-and-drop de leads entre etapas
Vista pipeline — drag-and-drop de leads entre etapas
Panel de reporting — funnel, captación semanal, desglose por fuente y segmento
Panel de reporting — funnel, captación semanal, desglose por fuente y segmento
Informe de llamadas — resultados, ranking del equipo, motivos de pérdida, reuniones
Informe de llamadas — resultados, ranking del equipo, motivos de pérdida, reuniones
Builder de landing y email — preview en vivo con panel de ajustes
Builder de landing y email — preview en vivo con panel de ajustes
Stack
TypeScriptTypeScriptReactReactViteViteTailwind CSSTailwindExpressExpressSQLiteSQLiteRechartsdnd-kitCaddyCaddysystemd
confidential - story available on request