Back to portfolio
db
2025 - Now·Active

Initial CRM

Concepteur & Ingénieur Principal

Un CRM self-hosted, API-first, construit from scratch pour faire tourner le workflow commercial d'Initial Infrastructures. Single-tenant by design, single-binary à déployer, et conçu pour recevoir sa donnée depuis des systèmes amont (Crawlswarm notamment) plutôt que d'être un endroit où des humains la collent à la main.

Ce qu'il gère : sociétés, contacts, leads, deals, pipelines personnalisables avec étapes, journal d'activités, tags, et un dashboard avec Recharts. Boards de pipeline en drag-and-drop via dnd-kit pour que l'équipe commerciale déplace les opportunités au geste, pas au formulaire.

API-first : endpoints d'ingestion dédiés pour les imports batch (sociétés, contacts, résultats de scraping) et une API d'intégration scopée (crm.companies:read, crm.contacts:write, etc.) pour les flux machine-to-machine. Crawlswarm pousse directement ses leads enrichis dans le CRM via une clé API, sans étape d'export manuelle.

Stack : React 18 + TypeScript + Vite + Tailwind côté frontend (Recharts pour les graphes, dnd-kit pour le drag-and-drop, primitives Radix pour popovers et menus). Express 4 + TypeScript côté backend avec better-sqlite3 pour la persistance - SQLite choisi exprès pour la simplicité d'un fichier unique à sauvegarder et migrer.

Déploiement : un seul process Node derrière Caddy (HTTPS auto) ou Nginx, supervisé par systemd. Le backend sert aussi le frontend buildé en production, donc un VPS, un service, un reverse proxy, c'est tout ce qu'il faut.

Statut : en production, opère le pipeline commercial d'Initial Infrastructures. Accès derrière auth sur le domaine de la société.

Vue pipeline — drag-and-drop des leads entre les étapes
Vue pipeline — drag-and-drop des leads entre les étapes
Tableau de bord — funnel, acquisition hebdo, répartition par source et segment
Tableau de bord — funnel, acquisition hebdo, répartition par source et segment
Rapport d'appels — résultats, classement de l'équipe, motifs de perte, rendez-vous
Rapport d'appels — résultats, classement de l'équipe, motifs de perte, rendez-vous
Builder landing & email — preview live avec panneau de réglages
Builder landing & email — preview live avec panneau de réglages
Stack
TypeScriptTypeScriptReactReactViteViteTailwind CSSTailwindExpressExpressSQLiteSQLiteRechartsdnd-kitCaddyCaddysystemd
confidential - story available on request