Make My Invoice: how I built a minimalist freelancer invoice tool as a non-dev
What I learned turning one freelancer’s frustration into a working desktop app
What you’ll find here:
A behind-the-scenes look at how I built Make My Invoice, a lightweight invoicing tool for UK freelancers. This post covers:
The real-life problem that inspired it
The pain points I aimed to solve
Competitor research and design decisions
How I built it using AI tools
What worked, what didn’t, and what I’d change
What’s coming next
The challenge
Problem framing
It's always easier to start with a problem you're close to. In my case, I picked my husband's monthly struggle: managing and organising his freelance invoices. He’s a motion graphic designer and couldn’t find an easy tool to generate invoices that fit his needs. So we thought—maybe there’s space to build one.
Pain points we identified:
Finding an invoice template accepted by HMRC
Generating invoices with sequential numbers
Managing invoices for multiple clients
Viewing revenue per client, by month and year
Downloading all invoices at the end of the fiscal year
Ensuring data security (keeping everything local)
The solution
Goal
Build a lightweight, user-friendly invoice generator tailored to UK freelancers.
Solving as many pain points above as possible.
Market insights & competitor analysis
Yes, the market is full of tools. But my goal was to solve one clear problem with a simple solution—not build another bloated SaaS.
I looked into products like Xero and Zoho. They're powerful, but often too complex for someone who just wants to invoice a few clients. I also liked Hello Bonsai and HoneyBook for their positioning. I made a simple comparison table with the top UK options: FreeAgent, Xero, Zoho, and those two:
They are pretty robust in general. So maybe there could be some space for a simple 1-problem-solver-tool.
User interviews
I had a few freelancer friends—many of them designers—who were willing to test early versions and give feedback. Their design advice was gold 💛
What went well:
Simple and intuitive UX
Invoices looked professional
Sequential invoice numbers worked as expected
Clear insights per client
What could be better:
Minor alignment & UI issues (now fixed!)
Missing a home dashboard with insights and a “create invoice” CTA
Local-only storage—people wanted export or sync options
Pictures of personas (real photography instead of illustrations)
What was missing (potential premium features):
Status tracking (paid, due, overdue)
Email automation for sending invoices and reminders
Overdue invoice notifications
More templates or customisation
Cross-browser history import/export
Item/deliverable templates
I also made a little poll on Linkedin to find out how much they valued data security (data saved in their browser). Most said they’d chose to access everything online through a SaaS, which was my initial gut feeling. I decided to still build the MVP saving the data on the browser, and I’ll explain below why I did that.
Build process
Tools I used
I started with a traditional PM flow: wireframe → prototype → build. But quickly switched to building straight in Lovable—starting with invoice creation, then expanding to client management, insights, and settings.
Here is the prompt I started with:
Invoice Generator Desktop App:
I’d like to create a desktop app where users can generate invoices and save all data locally.
Form Inputs:
• Invoice Details
• Issued date (calendar input)
• Payment terms (dropdown: 30 / 60 / 90 days or custom date)
• Due date (auto-calculated but editable)
• Freelancer Data
• Name, Email, Phone, Address
• Bank details: Bank name, Sort code, Account number
• Client (Bill To)
• Client name, Email, Address
• Preferred currency (dropdown)
• Items
• Description, Quantity, Rate → Auto-calculate total per line
• Add/remove items button
• Deliverables
• Text area
• Tax Rate (%)
• Input field
• Notes
• Text area
• Summary (auto-calculated)
• Subtotal
• Tax
• Total
Live Preview (on right side):
• Mirrors user input in real time
• Clean layout for a professional invoice
• Shows freelancer, client, dates, items, totals, and notes
PDF Download Button:
• At the bottom of the preview section
• Generates a local PDF file of the invoice when clicked
Tech constraints:
• Should run locally on desktop
• All data saved only in the current session (no storage or cloud)
• PDF generation should be done client-side
From there, I kept iterating again and again, until the functionality was working 10/10.
To manage my task list, as a good old-fashioned PM, I HAD to build a kanban board. It was stronger than me. So I created one using Trello and went with the good and old Next / In Progress / Done columns.
It helps me not forget important ideas. For example, after every user feedback, I would add to my list the new features that I wanted to improve, so I didn’t forget them.
I only went back to the flow wireframe → prototype when I had to build the landing page. I found one design which I really liked by looking at Framer templates (like this one here). With that, I started to create the main LP (landing page) sections, which in the end looked something like this. I used Miro’s wire framing features, which are super super basic, but honestly, does the job.
Visual design
I didn’t spend much time on branding. No mood boards or fancy logo explorations. I followed an MVP mindset: make it work, make it clean.
I reused colours I already loved (from Tech Bear 💚💙):
Vivid Blue: #0236b3
Bright green: #b5fd0a
Fonts:
Headings: Sora – tech-forward, slightly quirky
Body: Work Sans – neutral, elegant, very readable
Great for creative tools with personality, according to ChatGPT.
Once decided, I updated Lovable's design system to reflect the choices.
Final result:
Make My Invoice is currently live on the website: www.makemyinvoice.io, so you can explore freely, create loads of invoices and break it (please tell me if you do).
Here is a quick view of how the current landing page looks like:
With a quick 1 min video of how the invoice generator currently works:
And this is how the invoice PDF looks like when you download it:
So, voilá! Pretty sleek, isn’t it?
Decisions I made on purpose
Although I wanted to build a SaaS with a subscription model (mostly to learn how to manage Stripe), I decided to keep things simpler at the beginning. I went for a no-cloud approach to keep users' data private—and to reduce the complexity of the MVP.
With no data storage, I could skip the whole login process (even though today it's easy with Supabase and Lovable). It also meant I didn’t need to worry about data protection or app security for storing personal information.
Prompt hacks while using Lovable:
Debug: “Analyse the problem. Present the best solution. Get approval before coding.”
Ref image: “Visual fidelity matters. Replicate the fonts, spacing, colours, and style.”
UI: “Refactor to use Tailwind and ensure it’s responsive.”
Looping error: “Users are unable to [X]. Show me 3 different fixes and explain each one.”
UI bug (with image): “This component is breaking the layout. Use the attached image to determine the problem.”
If I had to start over…
I’d begin with no login and no Supabase integration. Before getting to the version above, I had an early version with authentication which I spend 114 AI code edits and wrote 171 messages on Lovable. After that, I thought I could easily duplicate the project, but because of the Supabase integration, I had to start from zero.
So I created a brand new project on Lovable and rebuilt the whole functionality. The version you see above had in the end 200 AI edits and 253 messages count. So yes, I spent a few hours and days on it.
I believe it’s easier to nail function first (if it doesn’t require login), so you can cover most edge cases.
I had to spend a lot of time debugging things like PDF rendering, due date logic (always 30 days), invoice number sequencing, history page, and so on. Those are essential. Having auth but a broken invoice experience wouldn’t be acceptable. Functionality first—then auth and security.
What I’d like to build next
I'd love to expand to a version that accepts payments. To get there, I’d need to:
Add authentication
Improve security
Introduce more premium features: status tracking, due date reminders, more templates
Integrate with Stripe
I'm still deciding whether to duplicate the project and create a paid version separately, or build everything into one site. The local-only USP complicates things—going hosted would mean changing how I handle data. And I worry about breaking what already works while trying to add those “advanced” features.
So I need to find out a solution for that, then I’ll be able to build the next phase and explore some ✨vibe marketing✨.
Wrapping up
Building this tool was a great exercise in staying focused on a single problem and solving it well. It was also a reminder that sometimes the best MVP is the one that does less, but does it right.
There’s still a lot I’d like to improve or build on—but shipping something real, seeing it used, and learning from it? That’s the win.
If you’re thinking of creating your own tool, I hope this behind-the-scenes helped in some way.
If you’re short on time and need an extra pair of hands to ship fast, I can help you build an MVP in just 3 days. Let’s chat, you can reach me here.
And, finally, if you’re a freelancer struggling with invoices, maybe give Make My Invoice a try? 🙂












Adoreiii, bem claro e straight to the point! Segue compartilhando! <3