Most invoice tools are either too expensive or too complicated. I built my own in one week and deployed it live. Here is every technical decision I made and what I learned.
Live demo: https://invoxa-eta.vercel.app
GitHub: https://github.com/Carter254g/invoxa
What It Does
Invoxa lets you create clients, generate invoices with line items, track payment status, and see your revenue on a dashboard. Multi-currency support included.
The Stack
React on the frontend. Node.js and Express on the backend. PostgreSQL for the database. Deployed on Vercel and Render.
Simple. No unnecessary complexity.
The Part Most Tutorials Skip — Auth Middleware
Every protected route in the API runs through this middleware before the controller even sees the request:
const auth = ( req , res , next ) => { const authHeader = req . headers . authorization ; if ( ! authHeader || ! authHeader . startsWith ( ' Bearer ' )) { return res . status ( 401 ). json ({ error : ' No token provided ' }); } const token = authHeader .…