All projects

FreelanceOS

FreelanceOS is a CRM I built to run a freelance IT business in one place. It follows each job from lead to quotation, project, invoice, and payment, and tracks renewals, expenses, and profit along the way.

At a glance

Type
Freelance CRM
Client
Personal project
Status
Live
Stack
TypeScript · React · Vite · Tailwind CSS · Shadcn UI · Supabase · Vercel

What I built

  • A sales pipeline with a drag-and-drop lead board, and quotations that become projects in one click.
  • Projects with milestones, tasks, time logs, change requests, and a note of where each client login is kept, never the password itself.
  • Quotations and invoices with automatic numbers like INV-2026-0001, discounts, and a print-ready layout.
  • Hosting, domain, and software renewals: marking one renewed records the payment and its cost, then sets the next due date.
  • A dashboard and reports for income, unpaid balances, profit, and the effective hourly rate on each project.

Technical decisions

Business rules in the database

Document numbers, renewals, and the dashboard and report figures run as Postgres functions and views. A renewal is one transaction, so a payment is never saved without its expense and new due date.

Row-level security instead of a custom API

Every table only returns rows owned by the signed-in user. The app queries Supabase directly from the browser, with no backend server to run.

Sample data on demand

One button in Settings fills the app with example leads, clients, projects, and invoices for a demo. Another removes them without touching real records.

Next projectNCLEX Amplified Interns