DEV3 Slotwise is a self-hosted booking platform you can run as a SaaS: businesses sign up, pick a plan and get a booking page, widget, deposits and reminders. This is a short build log.
Stack: Laravel 12, Filament 4 and Livewire 3 with four panels (super-admin, business, staff, customer). Two shared DEV3 packages: dev3/laravel-core and dev3/laravel-saas, the second written alongside Slotwise and knowing nothing about bookings.
Decisions that mattered
- Tenancy is one database with a
team_idon every tenant-owned model and a global scope. Saving a row that belongs to another tenant throws. - Livewire components on public pages keep the team id in a locked property, because route middleware does not run on Livewire update requests.
- Plan limits count themselves: counted limits (staff, locations), a metered monthly bookings limit that is given back on cancellation, and feature switches. The booking service checks the limit before it writes.
- The slot engine covers split shifts, buffers, time off, notice windows, time zones, daylight saving, rooms and "anyone available".
Limits: no public live demo; you review it through screenshots, video tours and your own install.
Trade-off we chose: one database with a scope on every tenant model is simple to reason about; other tenancy models are possible and we would like your view.
Feedback on the tenancy approach is very welcome.
#laravel#filament#saas#case-study