Home / Our work / ShuttleLedger
Full-stack web platform

ShuttleLedger

A multi-team management platform for weekly sports clubs. Managers run sessions, attendance, expenses and balances; players see their own attendance and what they owe.

The problem

Why it was needed

Small clubs usually run on a spreadsheet and a group chat. Money gets muddled, nobody can say why a balance changed, and the person holding the spreadsheet becomes a single point of failure.

Our approach

What we built

We built a proper system around one rule: money must be right. Every balance is calculated from an append-only ledger, corrections are new entries rather than edits, and every change is written to an audit log.

Key features

Immutable ledger

Amounts are stored as integer pence, balances are always derived from the ledger, and mistakes are fixed by adjustment entries, so the full history can always be reconstructed.

Fair cost splitting

Session costs are divided across the people who attended, with leftover pence allocated so the split always sums back exactly.

Per-team roles

Users can belong to several teams with a different role in each. Players can only see and change their own data; managers run the team.

Full audit trail

Who did what, to which record, with before and after values, for every mutating action including money movements.

Reports & notifications

Low-balance alerts, CSV exports and spreadsheet onboarding for clubs moving off their existing records.

Secure by default

Short-lived access tokens with revocable refresh tokens, rate-limited sign-in, and accounts that are deactivated rather than deleted so history never breaks.

Highlights

  • pnpm monorepo with shared validation schemas
  • Documented REST API ready for a mobile app
  • Containerised production deploy with automatic TLS

Built with

  • TypeScript
  • React
  • Vite
  • Fastify
  • Prisma
  • PostgreSQL
  • Zod
  • OpenAPI
  • Docker
  • Caddy
  • AWS Route 53

Want something like this?

We build secure, maintainable software around how your business actually works.

Book a free consultation →