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.

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
- 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.
- 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.
- 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.