Md. Jamil Hossain

Web application

Split ledger

A shared-expense app for trips, flats and dinners that splits bills four ways, tracks balances in several currencies and settles up in the fewest payments.

Screenshot of Split ledger
Fig. 1 · split-ledger-murex.vercel.app, captured from the live site

01 Problem

Shared costs get messy quickly: uneven splits, rounding cents, trips paid in more than one currency and long chains of who owes whom. Simple calculators either lose cents or suggest far more payments than needed.

02 Approach

  1. A monorepo where one shared TypeScript package holds the Zod API schemas and all the money logic, imported by both the React front end and the Fastify API, so the form preview and the server always agree.
  2. Amounts are whole minor units with leftover cents shared fairly, and the settle-up planner combines a greedy pass with an exact search for groups whose debts cancel out.
  3. PostgreSQL through Drizzle, with an in-memory fallback that powers a one-click demo.

03 Evidence

  • 102 unit and integration tests, including property tests against a brute-force optimum
  • Authorization suite tries every group route as an outsider
  • CI on PGlite and PostgreSQL 17, with Playwright and axe end-to-end tests

The repository README explains how to run each test suite, and its continuous integration history is public.