← All Work

LedgerBloom

Invoice management and payment tracking SaaS

TypeScriptReactNext.jsPostgreSQLPrismaNextAuthTailwind CSS
InvoicingPaymentsSmall business tools
LedgerBloom screenshot
LedgerBloomshipped

What it is

A mobile-first SaaS platform for creating, sending, tracking, and following up on invoices. Includes five built-in templates, a custom template studio, multi-currency support with live exchange rates, automated email reminders, and PDF generation with Cloudinary storage.

The Problem

Small businesses and freelancers in Uganda struggle to track outstanding invoices and follow up with clients systematically. Manual tracking in spreadsheets leads to missed payments and cash flow problems. Existing tools are either too expensive or not adapted to the Ugandan market.

My Role

Built the full-stack application including OAuth authentication (Google and GitHub), invoice management system with five templates, Custom Template Studio, automated reminder workflows via cron-triggered email, multi-currency dashboard, and PDF generation with Cloudinary storage.

Approach

Next.js App Router with Prisma ORM on PostgreSQL. NextAuth for authentication supporting Credentials, Google, and GitHub OAuth. Email sending via Resend (free tier) or SMTP/Nodemailer with dual provider support. PDF generation with React PDF renderer, stored on Cloudinary. Multi-currency conversion with live exchange rates. Loading skeletons and mobile-first responsive design throughout.

Hardest Decision

Building the Custom Template Studio — allowing users to design and save reusable invoice style presets while keeping the five built-in templates maintainable. The template engine needed to support both system templates and user-created ones without duplicating rendering logic.

Status

Live at ledgerbloom.ochiengpaul.com. Multi-currency invoice management with automated email reminders, PDF generation, and template customization.

What I'd Change

Would add mobile money integration (MTN MoMo, Airtel Money) for the Ugandan market, implement batch invoicing for recurring clients, and add a client portal for payment tracking.

Stack

TypeScriptReactNext.jsPostgreSQLPrismaNextAuthTailwind CSS