Case study / Booka
Three products, one database, one team.
Booka is a salon operating platform. A public marketplace where people book, a B2B workspace where salons run their day, and a superadmin console for whoever operates the platform itself. Three audiences, three release rhythms, one set of data underneath them.
- Role
- Software architect
- Ownership
- Shared venture with Giulio
- Scope
- Architecture, delivery, production handover
- Shape
- Monorepo, three deploy units, one database
- Status
- In production
The constraint
The three products do not move at the same speed. The marketplace changes whenever marketing needs it to. The workspace changes when salons ask for something. The superadmin console barely changes at all, and when it does, nobody outside the company notices.
But they all describe the same world. The same salon. The same booking. The same person, who can be a customer in the morning and a salon owner in the afternoon. Splitting the products was easy. Splitting the data would have been a mistake nobody could undo later.
So the architecture had one job: let three products evolve on their own schedules while keeping one truth about identity, bookings and salons.
The fork
Three shapes solve this. Two of them cost more than they look like they cost.
What that turned into
Three Next.js applications, deployed separately, on one Supabase foundation. Each environment has an explicit owner, so nobody has to guess which database a given deploy is talking to.
On top of that: a pre-launch funnel, consent and email flows, multilingual routing, a fiscal-readiness path, and transactional communications that are part of the product rather than bolted on after it.
The handover was designed alongside the code. A platform that only its author can deploy is not finished, it is hostage.
What this shape buys
The marketplace can ship on a Tuesday afternoon without anyone asking the workspace team for permission, because they are different deploy units.
A schema change is written once, in one place, and every product sees the same truth the moment it lands, because there is one database, not three that agree on a good day.
A person stays one person across all three products. That sounds obvious right up until the moment two separate systems have to be told that the customer booking an appointment and the owner accepting it are the same account.
And the platform moved from validation into commercial operation without a rewrite. The delivery model it started with is the one it still uses.
Want the same decision made on your product?
This is the part of the work I am usually hired for: the point where a product is about to become three products, and the choice made in that week decides what the next two years cost.
hello@robertodrago.dev