Asia/Dhaka
Projects

Invorio – Full-Stack Invoicing Application

image
December 1, 2024
Invorio is a modern, full-stack invoicing application built for businesses that demand precision and clarity in their billing workflow. The tagline says it best: "Invoicing at the Speed of Business." I designed and developed the entire application solo — from the database schema and authentication layer to the pixel-perfect invoice templates and client-facing UX. The application is live at invorio.vercel.app and the full source code is available on GitHub.
  • Professional A4-Optimized Invoice Templates: A carefully designed template system perfectly scaled for both on-screen viewing and print/PDF generation. Clients get clean, professional documents every time.
  • QR Code Scan-to-Access: Each invoice automatically generates a secure QR code embedded directly on the document. Clients simply scan it on any device to instantly view their digital bill — eliminating the need to hunt through email threads.
  • Multi-Currency Support: Built-in global-ready invoicing with real-time currency symbol mapping. Supports USD ($), EUR (€), GBP (£), JPY (¥), and more, with dynamic exchange rate calculations.
  • Digital Signatures: Invoices can include legally-accepted digital signatures via an integrated signature canvas (react-signature-canvas), adding a professional and verifiable touch to each document.
  • Client Management: Full client database with standardized phone number input (react-phone-number-input), billing address management, and contact history.
  • Auth0 Authentication with Google Social Login: Secure, production-grade authentication with Auth0, including Google Workspace social login support. Users are one click away from a secure session.
  • Supabase (PostgreSQL) Backend: All invoice data, client records, and user settings are stored in a managed PostgreSQL database via Supabase, with row-level security policies enforcing strict data isolation between accounts.
  • Form Validation with Zod & React Hook Form: All user inputs are validated client-side with type-safe Zod schemas and React Hook Form, catching errors before they ever hit the server.
  • Robust Date Handling: Invoice dates, due dates, and overdue tracking are handled precisely using dayjs.
  • Next.js 15+ (App Router, React 19): Built on the latest Next.js App Router architecture with React Server Components for blazing-fast page loads and nested layouts for the dashboard.
  • Tailwind CSS v4 + Shadcn UI (Radix Primitives): The entire UI is built using Tailwind CSS v4's new CSS-first configuration alongside Shadcn UI components, which are built on top of accessible Radix UI primitives. This gives a polished, accessible design without sacrificing flexibility.
  • Material Symbols Outlined: Used for iconography throughout the interface, matching the Material Design 3 aesthetic of the application.
  • Custom Typography: Three typefaces — Inter, Work Sans, and Hanken Grotesk — are combined to create a distinctive, professional typographic hierarchy.
  • Supabase: The entire database layer is Supabase-managed PostgreSQL. Row-Level Security (RLS) ensures that a user can only ever access their own invoices and client data — never another account's records.
  • Auth0 with Google OAuth: Authentication is handled entirely through Auth0, with callback URLs configured for both local development and production. Google Social Connection is enabled so users can sign up and log in with a single click.
  • API Routes (Next.js Route Handlers): All data mutations (create invoice, update client, etc.) go through Next.js API route handlers that verify the user session from Auth0 before touching Supabase.
LibraryPurpose
react-hook-formPerformant, uncontrolled form state management
zodType-safe schema validation for all form inputs
react-signature-canvasIn-browser digital signature capture and rendering
react-phone-number-inputStandardized, international phone number formatting
qrcode.reactClient-side QR code generation embedded in invoice PDFs
dayjsLightweight, immutable date formatting and manipulation
One of the most technically demanding parts of the project was generating invoice PDFs that look identical to the on-screen preview. Achieving pixel-perfect A4 formatting required careful CSS unit handling (mm vs px), managing font rendering differences between browsers and PDF renderers, and creating a dedicated print stylesheet that strips navigation and applies print-specific page breaks. The QR code on each invoice links to a shareable, publicly accessible invoice view URL. This required designing a token-based sharing system in Supabase that allows clients without an account to view their invoice securely — without exposing any other user data. Bridging Auth0's JWT tokens with Supabase's RLS policies required careful configuration on both sides. I implemented a custom JWT claim in Auth0 that Supabase reads to identify the user, ensuring that the authentication layer and database security model work in perfect sync. Invorio is a complete, production-ready invoicing solution that demonstrates end-to-end full-stack ownership — from schema design to auth flows to the final PDF a client receives. The focus on precision (A4-perfect templates, type-safe validation, QR codes) and user experience (social login, multi-currency, digital signatures) makes it a compelling tool for modern businesses.
Hey! Got questions?Ask me anything 👋