Skip to content
~/lucas

← Back to projects

Volunteer duty scheduler

The app that fairly spreads the club’s volunteers across hall and bar duty, every home-match weekend.

In productionPrivate source code

  • React 18
  • TypeScript
  • Vite
  • Node.js
  • SQLite
  • Docker

Context

On every home match, someone has to run the hall and the bar, and you don’t want to keep asking the same volunteers. The app replaces an early prototype (Python scripts and two HTML pages), then a desktop (Electron) app shared through Firestore. I turned it into a web app.

It has been live since October 2026. The idea: the club’s officers sign in from a computer or a phone, and everyone works on the same version of the schedule. Volunteers don’t need an account, and the schedule exports to Excel. On a phone, the three everyday gestures (checking the schedule, replacing someone, noting an unavailability) are designed for the thumb.

What I did

  • A deterministic assignment engine: same data in, same schedule out. An independent verifier then double-checks the result.
  • A Node server with no framework, only two production dependencies, and a SQLite database.
  • The move from desktop to web without touching the engine: going from Firestore to SQLite was a straight copy of the documents, with no discrepancy.
  • Archives that can’t be edited anymore: the database itself, through SQL triggers, refuses any change.
  • Home-grown authentication (passwords hashed with scrypt) and accounts created through single-use invitation links: no emails to send, so no SMTP server and no extra secret to look after.

How I built it

43 specs and around 1,500 tests, including the acceptance criteria from the requirements document, replayed on the club’s data. The server runs in a Docker container.

// For my 2026 projects, I work with AI agents (Claude Code): I frame the need, write the specification, then review and validate the code.