Skip to content
Manish Chavan

← All projects

Invoicer

Full Stack

Self-hosted invoicing with client records, itemised invoices carrying tax and due dates, server-generated PDFs, and a dashboard for billed, collected and outstanding totals.

Live demo · Source

Overview

A full-stack invoice management application. It handles client records, itemised invoices with tax rates and due dates, preview across three themes, and PDF generation on save. A dashboard tracks total billed, collected and outstanding amounts.

Role

Sole engineer. Next.js 14 App Router with server actions, Prisma over PostgreSQL, and the PDF generation and storage path.

The hard part

Generating the PDF server-side with Puppeteer on save, rather than in the browser, so the stored document is the invoice of record. That means running a headless browser reliably on a small VPS alongside the app.

Architecture

Next.js 14 App Router with server actions, Prisma ORM over PostgreSQL, Google OAuth through NextAuth, and Cloudinary for PDF storage. Invoice PDFs are rendered server-side with Puppeteer and uploaded on save. Deployed to a VPS on a custom subdomain.

Stack

Next.js · TypeScript · PostgreSQL · Prisma · NextAuth · Tailwind CSS