Skip to content

Multi-tenant SaaS · own product

Šape

SaaS for dog grooming salons: clients, dogs, appointments, public booking and automated email reminders. Each salon sees strictly its own data — a rule the database enforces, not the app.

data isolation in the database
RLSdata isolation in the database
steps to a booking
5steps to a booking
before the appointment — reminder
24 hbefore the appointment — reminder
languages
2languages

The task

A salon runs appointments out of a notebook and a messaging app, so bookings get lost and reminders are sent by hand or not at all. Software for that has to be multi-tenant from day one: one system, many salons, and no possibility of one salon seeing another's client.

Approach

  1. 01

    Every table carries a salon id and Postgres row-level security refuses a query for another salon's row. The salon id never comes from user input — it is resolved server-side from the session, because anything else is a privilege escalation path.

  2. 02

    A public salon directory searchable by salon, owner and city — the dog's owner finds the nearest salon, and the salon gets visibility it could not build alone.

  3. 03

    Booking in five steps: dog size, services, time slot, details and confirmation — no account and no phone call.

  4. 04

    Email reminders scheduled exactly 24 hours before the appointment, with one-click unsubscribe.

  5. 05

    Onboarding that walks a new salon through opening hours, services and pricing before the first appointment.

  6. 06

    Plan tiers and seat counts designed into the schema from the start, even though billing comes later.

  7. 07

    Croatian as the default language, with English prepared in the same translation system.

Result

In production on its own domain, with separate development and production environments and automatic per-branch deployments. The system is ready to take on the next salon without a single code change.

šape.com
Šape — the public salon directory, searchable by salon, owner and city
šape.com
Šape — step four of the booking flow, owner details with an appointment summary
šape.com
Šape — the salon's daily schedule with appointments, statuses and payment

Contact

Tell me what you are building — I reply today.

I normally reply the same working day. The first call takes thirty minutes, costs nothing and commits you to nothing.