Case

Ride planner

Live

A generic planning tool with three separated roles and a full audit trail — in practical use.

What & why

A planning tool that plans and assigns rides, with three strictly separated roles: requester (request a ride + notes), planner (the whole handling) and viewer (read-only). The setup is deliberately generic.

Planning rides with several people calls for clear roles and a reliable trail of who changed what when. We wanted that tidy and auditable, not in a spreadsheet everyone edits over one another.

Because the core is generic — roles, a state machine, email reminders and an audit trail — the same setup adapts easily to quite different planning-with-roles. Think of coordinating recurring transport for a group, with automatic reminders so no one forgets a ride or a handover; of recording care delivered and the hours involved; or of any process where several people have to request, handle or merely watch something.

Approach

  1. Three roles with their own rights: requester, planner and read-only viewer.
  2. A state machine for the planner: requested → ordered → confirmed, plus assigning a driver.
  3. XLSX export and email reminders for everyday use.
  4. A note audit trail that records every change and makes it reversible (restore).

Technology

  • PHP
  • SQLite
  • Vanilla JS
  • PWA
  • Schema migrations
  • Bearer-token auth

Images & demo

Planner view: rides in colour-coded statuses, with assigned drivers.
Planner view: rides in colour-coded statuses, with assigned drivers.
Requester view: request rides and follow their own status.
Requester view: request rides and follow their own status.