In short
One system instead of a notebook, Excel and manual texting: calendar, clients, vehicles, price list, gallery and website in one place.
The client installs nothing — they get a personal link by SMS, request a slot, and the appointment is created only once the studio confirms it.
Built as a multi-studio product from day one: every studio has its own subdomain or domain, plan, limits and modules.
From a single-studio implementation to a public SaaS with sign-up, Stripe and a 14-day trial in about four weeks.
Starting point
MP8 Detailing is a detailing studio in Dąbrówka near Poznań with a 4.9 rating from 36 Google reviews. Great paintwork, happy customers — and the classic problems of a service business: appointments in a notebook and in several chats, "what did you charge me last time?", texts typed after hours, before/after photos scattered across employees' phones.
The first version was meant to be a panel for one studio. Already at the mock-up stage it was clear that every studio in Poland has the same problems, and that the market has no tool built for this way of working: per-client pricing for regulars, a slot request instead of a hard booking, SMS instead of e-mail. So we proposed a multi-studio architecture from day one, without expanding the scope of the first delivery for MP8.
What we built
Everything a studio actually uses every day — in four apps on one codebase and one database.

Studio panel
A calendar that never double-books. Client and vehicle records, a price list with categories and per-client pricing, a before/after gallery tied to the vehicle and service, inventory with chemical usage tracking, a daily report, SMS templates, users and roles.
Personal booking link
The studio decides which services a given client can pick. The client opens the link from an SMS, no account and no app. The request lands in the panel, and the appointment is created only after confirmation — zero double bookings.
Detailer app (PWA)
Each employee sees their appointments on their phone, changes statuses, uploads photos and gets push notifications. Installed from the browser, no app stores.
Studio website included in the plan
An address like your-studio.detailingflow.pl or a custom domain with an automatic certificate. Services and prices always in sync with the panel, reviews, before/after photos, SEO guides, slot requests straight from the site. All edited in a visual editor.
SMS you don't have to think about
Eight scenarios: confirmation, 24 h and 2 h reminders, reschedule, cancellation, car ready for pick-up, payment link, booking link. Quiet hours, retries, the studio's own sender name, an SMS bundle included in the plan.
The platform underneath
Studio sign-up in 3 minutes, Starter / Studio / Studio+ plans, 14 days free, Stripe Checkout and customer portal, seat, SMS and gallery limits enforced automatically, an operator panel with support tickets, system health and "view as studio".
How the project went
From mock-ups to version 1.0 in about four weeks, with the first studio in production along the way.
Hi-fi mock-ups and product decisions
Clickable mock-ups of every view: panel, detailer app, booking link, studio website, operator console. Key decisions written down up front: a slot request is not a booking, prices are frozen on the appointment, public tokens stored only as hashes, no SSO, no e-mails to end clients.
Foundation: monorepo, database schema, design tokens
Turborepo with the web app, a queue worker and packages: database (Drizzle, migrations, seed), domain logic with tests (per-client pricing, SMS segments, time zone, payments), design tokens extracted from the mock-ups, a Google client.
First studio in production
Panel, detailer app, booking link and the mp8detailing.pl website. Datadog monitoring (RUM and backend) from the first deploy.
Turning it into a platform
Sign-up with plan selection, Stripe Checkout, customer portal and subscription webhooks, a 7-day grace period for unpaid invoices, plan limits recalculated nightly, an operator panel, platform blog and FAQ, newsletter.
Security audit and custom domains
A seven-wave work plan: CSP and headers, sessions, rate limiting, separated encryption keys, public token protection, payment hardening, queues resilient to multiple worker instances. On-demand TLS in Caddy — a studio connects its own domain without the operator.
Going to market: detailingflow.pl
Sales landing page, pricing, two onboarding tracks (a 15-minute live demo or 3-minute self-service sign-up), a "book a demo" form, SEO, blog and guides on studio websites.
Tech stack
Modern, but boring in the good sense: well-known tools, one database, many servers.
Frontend and backend
Next.js 15 (App Router, Server Actions), React 19, TypeScript, Tailwind CSS 4, PWA with web push
Data
PostgreSQL 17, Drizzle ORM, 38 migrations, S3 for photos and files
Queues and cron
pg-boss in a separate worker: SMS, e-mail, quiet hours, retries, daily report at 6 pm
Integrations
Stripe (platform subscriptions and studio payments), Twilio (SMS), Resend (e-mail), Google Calendar (two-way sync), Google Business
Infrastructure
Docker images deployed to Kubernetes servers behind a load balancer
Quality and observability
Unit tests for domain logic, Playwright e2e, ESLint, Datadog RUM + backend, health checks, audit log
Got a product idea, or a service business drowning in notebooks?
We'll build you a booking system, a panel and automations that fit the way you actually work. And if it's meant to become a SaaS, we'll design it that way from day one — we've been through it ourselves.
Decisions that paid off
A slot request instead of a booking. The client picks services and a time from the link, but the appointment is created only after confirmation in the panel. The studio keeps control of its schedule, and the client doesn't need an account.
Prices frozen on the appointment. Every line item stores the price from the day of service. Changing the price list never rewrites history, so reports and billing always add up.
Multi-tenant from day one. Studio, users, clients, price list, website, domains, limits — everything is tied to the studio. Moving from "the MP8 app" to "the platform" didn't require rewriting the database.
A website included in the plan. Instead of integrating with third-party sites, we give every studio its own: services and prices sync with the panel, and guides work on SEO. For a small studio it's often the first website they've ever had.
Payments on the studio's own Stripe account. The payment link sent by SMS lands on the studio's Checkout. The platform doesn't handle end clients' money — less regulatory risk, simpler accounting.
Deliberate "no". No SSO, no e-mails to end clients, no SMS replies. Every "no" means less code, less GDPR and less support.
Results
Numbers after 3 months in production.
Frequently asked questions
Is DetailingFlow a Just Site product or a client project?+
Could a system like this be built for another service industry?+
How long did the implementation take?+
Do the studio's clients need to install an app?+
What does maintaining a system like this look like?+
Let’s build something that truly works
Your project could be the next case study we’re proud of.







