All-in-one CRM for freelancers — time tracking, client management, invoices, and sales funnels.
A lightweight CRM built specifically for solo freelancers and small agencies. No bloat, no enterprise features — just the tools you actually need to manage clients, track time, and get paid.
Manage your client base with contact info, tags, notes, and full activity history. Every client has a dedicated profile showing all projects, sessions, invoices, and communication history in one place.
Start a timer, pick a client and project, stop when done. Supports hourly and fixed-rate billing. Every session is trackable, filterable, and directly linkable to invoices.
Generate invoices from tracked sessions in one click. Line items pull directly from your time entries. Export to PDF, send via public share link, track status from draft to paid.
Kanban-style pipeline boards to move leads through custom stages. Built for different workflows: sales, onboarding, project delivery, client reactivation. Convert a lead to a client without losing history.
Log calls, emails, meetings, and notes against any client or lead. Full chronological history per contact.
| Layer | Technology |
|---|---|
| Framework | Next.js 14 App Router |
| Database | Supabase (PostgreSQL) |
| Auth | Supabase Google OAuth |
| UI | Radix UI Primitives + Tailwind CSS |
| Data Fetching | TanStack Query v5 |
| Forms | react-hook-form + zod |
| PDF Export | @react-pdf/renderer |
| Drag & Drop | dnd-kit |
| Deploy | Vercel |
| Route | Description |
|---|---|
/login |
Google sign-in |
/dashboard |
Revenue, hours, active projects overview |
/clients |
Client list |
/clients/[id] |
Client profile with full history |
/projects |
All projects |
/projects/[id] |
Project detail with sessions |
/tracker |
Timer + session list |
/invoices |
Invoice list |
/invoices/new |
Create invoice from sessions |
/invoices/[id] |
Invoice detail, PDF export, share link |
/funnels |
Funnel list |
/funnels/[id] |
Kanban board |
/leads/[id] |
Lead card with activities |
/settings |
Account settings, invoice defaults |
/share/[token] |
Public invoice (no auth) |
src/
├── app/ # Next.js App Router (thin wrappers only)
├── entities/ # Domain models, hooks, DB access
│ ├── client/
│ ├── project/
│ ├── session/
│ ├── invoice/
│ ├── lead/
│ ├── funnel/
│ └── activity/
├── features/ # User scenarios
├── widgets/ # Page-level building blocks
└── shared/ # Utils, UI primitives, Supabase client
Architecture follows Feature-Sliced Design. See .docs/CLAUDE.md for full documentation map.
- Node.js 18+
- Supabase project with Google OAuth enabled
# Install dependencies
npm install
# Copy env file
cp .env.example .env.local
# Fill in your Supabase credentials
# NEXT_PUBLIC_SUPABASE_URL=
# NEXT_PUBLIC_SUPABASE_ANON_KEY=
# Run migrations
# (see .docs/crm-schema.md for SQL)
# Start dev server
npm run dev| File | Description |
|---|---|
.docs/CLAUDE.md |
Agent entry point, full doc map |
.docs/FSD.md |
Architecture rules |
.docs/ENTITIES.md |
Entity structure patterns |
.docs/WEB-ARCHITECTURE.md |
Data flow, providers, auth |
.docs/UI.md |
UI components guide |
.docs/STYLEGUIDE.md |
Visual style and theming rules |
.docs/FORMS.md |
Forms guide |
.docs/crm-schema.md |
Database schema |
.docs/crm-pages.md |
Pages specification |
This is an MVP. Out of scope for v1:
- Team / multi-user support
- Recurring invoices
- Payment integrations (Stripe etc.)
- Email sending
- Mobile app