DEV Community

Cover image for I'm Rebuilding My Old Invoice App and This Time I Actually Know What I'm Doing
Sidharth Sangelia
Sidharth Sangelia

Posted on

I'm Rebuilding My Old Invoice App and This Time I Actually Know What I'm Doing

So I have this old project called Invoicepedia. Built it like 6 months ago when I was just starting to learn full stack. Next.js, Clerk, Neon, basic CRUD. The usual "I just learned how to connect a database" kind of project.

I opened it recently and honestly it was rough. Delete button crashed the app sometimes. You could submit an empty invoice form with no validation. The Stripe integration was half working. I had both Drizzle and Prisma installed at the same time for some reason. Classic.

I almost deleted it and moved on to something new.

Instead I decided to actually fix it and turn it into something real.


Why Not Just Start a New Project

Every time I start something new I spend like 3-4 days just on setup. Auth, database, environment variables, middleware, all that stuff before you even write a single line of actual product code. And by the time I'm done with setup I've already lost interest or I hit some weird error and just abandon the whole thing.

Invoicepedia already had all of that. It was broken but the foundation was there. Auth worked. Database was connected. Routes existed.

So I thought okay, why not just fix this one instead of starting from zero again. Worst case I learn something. Best case I actually ship something.


First Thing I Did Was Stop Adding Features

Old me would have immediately started adding new stuff. Charts. Dark mode. AI features. Whatever sounded cool.

This time I made a list of everything that was broken and fixed that first. No new features until the existing stuff actually worked properly.

Removed dead dependencies. Rewrote the schema. Added proper Zod validation to every server action. Changed hard deletes to soft deletes because you should never hard delete financial records. Fixed the middleware. Added actual error handling.

It took a week and nothing visually changed. The app looked the same. But after that week I wasn't scared to touch the codebase anymore and that felt different.


What I'm Actually Trying to Build

Yeah I know. Another invoice app. There's like 50 of them already.

But here's the thing — most of them are either too expensive or too complicated for a normal freelancer. FreshBooks charges you $19-30 a month and limits your clients on the cheaper plans. Wave was free and then slowly started charging for things that used to be free. Invoice Ninja has so many features that the UI looks like a cockpit, a normal person opens it and immediately closes the tab.

The people I want to use this are freelancers. Developers, designers, writers. People who just did some work, need to send an invoice, and want to get paid without learning accounting software.

So the whole idea is just — do the basic things really well. Don't try to be QuickBooks. Don't try to be FreshBooks. Just be the thing a freelancer needs to send professional invoices and track who's paid them and who hasn't.


What I'm Shipping First

I made a list of like 10 features I want to build eventually. AI invoice generation, automated payment reminders, client portal, recurring invoices, expense tracking. The full thing.

Then I looked at that list and realised if I wait until all of that is done I will never ship anything.

So the first version is going to have three things:

PDF generation — because an invoice app that can't produce a PDF is just a form.

Email sending — so you can actually send the invoice to your client from inside the app instead of downloading it and attaching it to Gmail manually.

A proper dashboard — right now it's just a table. I'm adding three metric cards at the top so when you open the app you see immediately how much you got paid this month, how much is still outstanding, and how many invoices are overdue. That's actually useful information.

That's it. Ship those three. Get some users. See what they actually want next.


The Goal is 5 Users

Not 500. Not 5000. Five real people who use it and tell me what's wrong with it.

I'll post updates as I build. What I'm adding, what's breaking, what people say when they actually try it. I don't have it all figured out, I'm figuring it out as I go.

If you're a freelancer who's annoyed at paying too much for invoicing software, keep an eye on this. If you're a dev learning full stack, hopefully this is useful to see what an actual messy in-progress project looks like compared to the clean tutorial versions.


Stack is Next.js 15, Prisma, NeonDB, Clerk, Tailwind, shadcn/ui.

Happy to answer questions in the comments if anything here was interesting or you want to know more about specific decisions I made.

Top comments (0)