Case 03 / 17 · CRM and task tracker for freelancers and studios · 2026
CRM
A self-hosted Linear-meets-CRM for developers who build for clients: a task kanban, clients with a contact history, money by milestones, invoices and acts, proposals with a public link, a client portal, time tracking, automations, a Telegram bot, GitHub, site monitoring and an encrypted credentials vault. Multiple workspaces with roles, live updates over WebSocket — all in a single Node process on SQLite.
- Development time: 14 days
- Lines of code: 22,000+
- Database models: 31
- API modules: 22
Challenge
A freelancer or a small studio keeps projects in a tracker, clients in a spreadsheet, money in notes and server passwords in a chat. The invoice for the remainder gets forgotten, a lead goes cold without a reply, nobody knows which project actually makes money, and the client keeps asking how things are going. Off-the-shelf CRMs are expensive, heavy and know nothing about commits, domains or bot tokens.
Solution
One Express 5 + Prisma backend on SQLite with a routes → services → middleware layout: JWT, a per-workspace role check (owner, admin, editor, viewer) and zod schemas on every input. The card is the hub: the client, payment milestones, expenses, time, invoices, proposals, monitors, credentials, files and dependencies all hang off it. A scheduler in the same process checks sites, reminds about deadlines and payments, posts recurring payments, runs automation rules and sends a morning digest to Telegram. The React 19, Tailwind 4 and motion frontend has its own selects and date pickers and updates in real time over WebSocket.
Highlights
Kanban + CRM + finance · Invoices, acts, proposals · Client portal · Telegram, GitHub, monitoring
What was built
- Drag-and-drop kanban, a list with bulk actions, a deadline calendar and a Gantt timeline with draggable bars and dependency arrows
- Cards with a #12 number, checklist, labels, priority, GitHub, Figma, server and domain links, comments with mentions and a full history
- Task dependencies with cycle protection and a “waiting for a task” badge on the board
- Clients: statuses from lead to former, contact people, a history of calls and meetings, “get in touch” reminders, LTV, debt, average deal and effective rate
- Money by milestones (30/40/30), payments, per-project expenses and recurring payments with reminders and auto-posting
- Numbered invoices and acts with company details and the amount in words — a printable A4 form and PDF, an act from an invoice in one click
- Proposals with a public link: the client reads, accepts or declines, the card moves on by itself and the lead becomes a client
- A password-free client portal: project progress, payment milestones, invoices, acts and messages to the team
- A timer on the card and a time report by person, client and project with cost and billable amounts, CSV for the client
- Project economics: revenue − expenses − labour cost = profit and margin
- Analytics: a funnel with conversion and days per stage, a six-month revenue forecast against the goal, weekly team workload
- “When → do” automations: created, moved, due soon, overdue, lead gone cold → notify, assign, add a checklist, invoice the remainder, remind about the client
- Card templates with a checklist, labels, budget and payment split
- Telegram bot: notifications, a morning digest, /tasks and /digest, a forwarded message becomes a card or a client event
- A signed GitHub webhook: commits and PRs with a #number land in the card history, a merged PR moves the card
- Monitoring of client sites and APIs: uptime, latency, SSL and domain expiry, alerts on downtime and recovery
- An AES-256-GCM credentials vault with role-based visibility and every reveal written to the audit log
- Multiple workspaces with roles, live updates and presence over WebSocket, saved views in the sidebar
- Ctrl+K command palette, search by #number, Linear-style shortcuts
- CSV and Trello import, JSON backup, audit log and a 30-day trash with restore
Stages
- Backend and access (7 day) — Express 5, Prisma and SQLite, JWT, workspace roles, stages, drag-and-drop cards, subtasks, history, seed data
- Interface (4 day) — React 19, Tailwind 4 and motion, board, list, calendar, card drawer, custom selects and date pickers, command palette
- Clients (1 day) — Contacts, contact history, reminders, client stats, money and time on the card
- Finance and documents (2 day) — Payment milestones, expenses, recurring payments, invoices and acts, proposals with a public link, client portal
- Integrations and planning (1 day) — Telegram bot, GitHub, monitoring, credentials vault, automations, analytics, timeline, WebSocket, import and trash
Next project: Lumo