惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
C
Check Point Blog
B
Blog RSS Feed
G
Google Developers Blog
H
Help Net Security
博客园 - Franky
Blog — PlanetScale
Blog — PlanetScale
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Recent Announcements
Recent Announcements
B
Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
DataBreaches.Net
小众软件
小众软件
T
The Blog of Author Tim Ferriss
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
Y
Y Combinator Blog
T
Tailwind CSS Blog
J
Java Code Geeks
MyScale Blog
MyScale Blog
雷峰网
雷峰网
有赞技术团队
有赞技术团队
博客园 - 聂微东

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I built a freelance client + invoice tracker in ~3 hours ...
Ibrahim Edhem Harbutlu · 2026-06-01 · via DEV Community

Ibrahim Edhem Harbutlu

Three hours. That's roughly how long it took me to go from blank screen to a
working full-stack app with a real database.

I'm not a developer by background. I use Cursor as my main build tool and
Supabase for the database. No local PostgreSQL setup, no fighting with configs —
just a Transaction Pooler connection string and a prompt.

Here's what came out: FreelanceFlow, a client and project tracker built
specifically for freelancers who are tired of juggling invoices in spreadsheets.

What it does

  • Client management — add clients, track contact info, see all their projects in one place
  • Project tracking — status (active, on hold, completed), deadlines, linked to a client
  • Invoice generation — create invoices per project, mark them paid/unpaid, track totals
  • Dashboard — monthly revenue, outstanding amount, active project count, recent activity
  • 12-month revenue chart built with Recharts
  • Dark/light mode, mobile responsive down to 375px

No bank sync. No Stripe. No OAuth. You install it, you own it, you run it
yourself. That was intentional — the simpler the setup, the more useful it
actually is.

The stack

React 19 + Vite, Express 5, TypeScript, PostgreSQL via Drizzle ORM,
Tailwind CSS v4 + shadcn/ui, Framer Motion, Recharts. pnpm workspaces
monorepo. The full API contract is defined in OpenAPI 3.1 and Recharts
handles the charts.

What Cursor handled

Honestly, most of it. The entire monorepo structure, all the API routes,
the Drizzle schema, the React Query hooks, the dashboard layout. I wrote
the initial prompt, reviewed the output, fixed two routing bugs, and
that was it.

The part I still had to think through: the invoice status logic and making
sure the revenue chart was pulling from real data, not placeholder seed data.
Those took an extra 20-30 minutes of iteration.

What I'm doing with it

I packaged it and put it on Gumroad for $49. The pitch is simple: if you're
a freelancer or developer who wants a working starting point instead of
spending 2-3 days on boilerplate, this is it.

Live demo: https://freelanceflowweb-production.up.railway.app
Gumroad: https://ibrh96.gumroad.com/l/bcsufq

Honest take

Zero sales so far. I posted on Indie Hackers and got useful feedback —
the main note was that $39 was too cheap and the channel I was using
(IH) is better for feedback than for actual conversions. Both turned out
to be true. Price is now $49. Writing this post is me testing a different
channel.

I don't know if this will sell. But I do know the app works end-to-end,
the demo is populated with real data, and the code is clean enough that
a developer could extend it in an afternoon.

If you've built something similar or sold boilerplates before — what
actually drove your first sale?