Back to portfolio
db
2025 - Now·Active

Initial CRM

Designer & Lead Engineer

A self-hosted, API-first CRM built from scratch to run the commercial workflow of Initial Infrastructures. Single-tenant by design, single-binary to deploy, and structured to receive its data from upstream systems (Crawlswarm and others) instead of being a place where humans paste it in.

What it manages: companies, contacts, leads, deals, customizable pipelines with stages, activity logs, tags, and a dashboard layer with Recharts. Drag-and-drop pipeline boards via dnd-kit so the commercial team moves opportunities by gesture, not by form.

API-first: dedicated ingest endpoints for batch imports (companies, contacts, scraping results) plus a scoped integration API (crm.companies:read, crm.contacts:write, etc.) for machine-to-machine flows. Crawlswarm pushes its enriched leads directly into the CRM via an API key, no manual export step.

Stack: React 18 + TypeScript + Vite + Tailwind on the frontend (Recharts for charts, dnd-kit for drag-and-drop, Radix primitives for popovers and menus). Express 4 + TypeScript on the backend with better-sqlite3 as the persistence layer - SQLite chosen on purpose for the simplicity of a single file to back up and migrate.

Deployment: runs as a single Node process behind Caddy (HTTPS auto) or Nginx, supervised by systemd. The backend also serves the built frontend in production so one VPS, one service, one reverse proxy is all you need.

Status: in production, operating Initial Infrastructures' commercial pipeline. Auth-gated behind the company domain.

Pipeline view — drag-and-drop leads across stages
Pipeline view — drag-and-drop leads across stages
Reporting overview — funnel, weekly intake, source & segment breakdown
Reporting overview — funnel, weekly intake, source & segment breakdown
Calls report — outcomes, team ranking, loss reasons, scheduled meetings
Calls report — outcomes, team ranking, loss reasons, scheduled meetings
Landing & email builder — live preview with side panel controls
Landing & email builder — live preview with side panel controls
Stack
TypeScriptTypeScriptReactReactViteViteTailwind CSSTailwindExpressExpressSQLiteSQLiteRechartsdnd-kitCaddyCaddysystemd
confidential - story available on request