Lessons from Building a Full Invoice App for the Price of a Netflix Subscription

Like a lot of devs, I built a side project that scratched a personal itch: an invoice generator. But instead of going full SaaS startup mode, I treated it as a challenge—build something clean, useful, and fast, with a real login system, server-side PDF generation, and as little overhead as possible. The result is InvoiceDen, a React-based web app hosted on Cloudflare Pages, with backend functionality on an EC2 instance, all for about $8/month. Here’s what I learned architecting it on a shoestring budget — and how you can do something similar without spinning up Kubernetes or draining your wallet. ⚙️ The Stack The app is split into a classic frontend + backend setup, but optimized for cost and simplicity. Frontend: React app hosted on Cloudflare Pages Static deploys, global CDN, zero dollars Backend: Small server on a tiny EC2 instance Handles login, PDF generation, and basic routing Auth: Email/password login using bcrypt + sessions No Firebase, no OAuth maze PDFs: Generated on the server using pdfkit Outputs a clean PDF based on user inputs and invoice state Despite being a “small project,” it touches almost every part of a typical web stack.

May 9, 2025 - 22:27
 0
Lessons from Building a Full Invoice App for the Price of a Netflix Subscription

Like a lot of devs, I built a side project that scratched a personal itch: an invoice generator. But instead of going full SaaS startup mode, I treated it as a challenge—build something clean, useful, and fast, with a real login system, server-side PDF generation, and as little overhead as possible.

The result is InvoiceDen, a React-based web app hosted on Cloudflare Pages, with backend functionality on an EC2 instance, all for about $8/month.

Here’s what I learned architecting it on a shoestring budget — and how you can do something similar without spinning up Kubernetes or draining your wallet.

⚙️ The Stack

The app is split into a classic frontend + backend setup, but optimized for cost and simplicity.

  • Frontend: React app hosted on Cloudflare Pages

    • Static deploys, global CDN, zero dollars
  • Backend: Small server on a tiny EC2 instance

    • Handles login, PDF generation, and basic routing
  • Auth: Email/password login using bcrypt + sessions

    • No Firebase, no OAuth maze
  • PDFs: Generated on the server using pdfkit

    • Outputs a clean PDF based on user inputs and invoice state

Despite being a “small project,” it touches almost every part of a typical web stack.