ezerve
Changelog

What shipped, as it ships.

Honest, dated, and specific — no retroactive polish.

The booking engine is real

The engine before the chrome. Everything a booking system must never get wrong — keeping each business's data separate, avoiding clashes, an audit trail, and staff roles — now exists, is enforced in the database, and is verified against real Postgres in CI.

  • Monorepo foundation: workspace layout, CI battery, and strict data separation between businesses with defense-in-depth (Postgres row-level security plus guards).
  • Append-only audit log from the very first migration — every change is an attributed, immutable event.
  • The booking engine: things you rent, staff, or schedule (one at a time or with shared capacity), weekly availability with seasons, blackouts, buffers, lead times, and slot granularity.
  • A calendar that can't double-book: two people racing for the last spot can't both win, because the database itself resolves the clash, not app code. Multi-item bookings are all-or-nothing.
  • Offerings with requirements and pools — “any stylist”, “two kayaks and a guide” — with automatic assignment at confirmation.
  • Roles and permissions: platform-defined permission keys, per-business role composition, per-assignment scoping, and last-admin protection.
  • Business setup with templates for your trade (outfitters, salon) that seed what you rent, offerings, and hours — fully editable after.