Case study

TYKHO Care — Sensory-Friendly Booking App for Kids

Booking for kids who find salons hard — five calm questions, only the times that fit.

Outcome: Built in 6 days · two live PWAs · Lovable × Contra challenge entry

  • Type: Challenge entry
  • Client: TYKHO Care (fictional client brief)
  • Role: Product Designer & Builder (solo)
  • Year: 2026
  • Tools: Lovable, Lovable Cloud, Resend, Claude
  • Tags: Product Design, Vibe Coding, Accessibility, Contest

View the live project

The case in brief

Context
A Lovable × Contra challenge entry: a booking system for Anya, a solo children's hairdresser in Odesa (a fictional client, built as a real brief), whose clients are often children who find salons hard.
Problem
Every booking took 10–15 messages before the calendar even opened; parents re-explained their child every time, and each cancellation burned one of the rare quiet slots.
Scope
Product design and build of two working apps: a no-login booking flow for parents and an installable owner app for the stylist — briefs, reminders, waitlist, days off, Outbox, services and hours.
Role
Product Designer & Builder (solo)
Constraints
Six days, 27 Sep – 2 Oct 2026. Lovable and Lovable Cloud only; quiet hours on Tue/Wed mornings, 15-min buffers, Meet & Greet visits, home visits grouped by district.
Key decisions
  1. Start with the child, not the calendar: five calm questions choose the visit before any time is shown.
  2. Deterministic, explainable matching instead of an AI guess — the parent sees why this visit was chosen.
  3. Slot rules and no-double-booking enforced in the database, not only in the UI.
  4. A real waitlist that refills cancellations automatically, held 2 hours, then passed on.
  5. Design system and styleguide first — one calm blue, soft contrast, reduced motion.
Outcome
Built in 6 days · two live PWAs · Lovable × Contra challenge entry
Reflection
The biggest lesson: test every button end to end. Several only pretended to work — a waitlist that led to the normal form, a nudge that was just a toast — and making them real is what turned a demo into a system.

TYKHO Care — booking for kids who find salons hard

A sensory-friendly booking app for a solo children's hairdresser in Odesa. Built in 6 days with Lovable for the Lovable × Contra challenge.

  • 6 — Timeline — Days, 27 Sep – 2 Oct 2026
  • 2 — Apps — Installable PWAs — for parents and for the stylist
  • Lovable × Contra — Challenge — #lovablechallenge entry

Most booking apps ask "when?". For some families that's the wrong first question. TYKHO ("quiet" in Ukrainian) starts with the child: five calm questions decide the right kind of visit, then only the times that actually fit that child are shown. The stylist gets a brief before the child walks in, reminders and cancellations handle themselves, and a freed slot goes to the best-fit family on the waitlist — without a single message from her.

The client

Fictional, built as a real client brief — a solo children's hairdresser in Odesa. One chair, one child at a time: a quiet studio in Arcadia plus home visits along Fontanka Road and in Tairova. Many of her clients are children who find salons hard: the buzz of clippers, a mirror, a waiting room, being touched without warning. Some are autistic, some are simply sensitive — TYKHO never asks for a diagnosis.

The problem

For parents

  • Every booking took 10–15 messages before Anya could even open her calendar: "Do you have anything quiet? He can't stand clippers. Can we come when no one else is there? Could you cover the mirror?"
  • They had to explain their child again and again.
  • A "tough morning" meant an awkward cancellation message.

For Anya

  • Messages ate her day; the phone rang mid-cut while a child in the chair needed all her attention.
  • Notes lived in chats, times in a notebook — bookings got mixed up.
  • Every cancellation burned one of the rare quiet slots.
  • A sick day meant calling every family.

Quirks I designed for (the "client brief")

  • Quiet hours only on Tue/Wed mornings
  • High-support visits need a 15-min buffer after them
  • Some children need a 20-min Meet & Greet before a first cut
  • Home visits are grouped by district and day
  • "Tough morning" cancellations are normal, not a failure
  • Parents re-explain triggers every time
  • Anya can't answer the phone while cutting

An open slot isn't always the right slot. The calendar was never the problem — matching the child to the visit was.

— Insight

Two apps, one system

TYKHO is two installable web apps — no App Store, no account for parents.

TYKHO

Book, move or cancel in one tap. Phone or computer, no login.

TYKHO Owner

Her day, the briefs, the waitlist. Laptop or phone, installable.

One set of rules

Quiet hours, buffers, districts and days off live on the server — both apps follow them.

The parent flow

  1. Five calm questions — what makes haircuts hard (sound, touch, mirror, waiting…), how the last cut went, scissors or clippers, where the child is calmest, what helps them settle. No diagnosis, no long form, about a minute.
  2. The gentlest kind of visit, with the "why" — e.g. Quiet First Cut · 60 min · studio during quiet hours · no other guests, with the reasons in plain language and what Anya will prepare (dim lights, scissors only, no mirror).
  3. Only the times that fit — up to three. Busy hours, loud days and slots without a buffer are hidden. Home visits show only the days Anya is in that district.
  4. Booked — with a story for the child: "What will happen", step by step, to read together before the visit. Add to calendar, manage the visit.
  5. One reminder the day before — Yes, we're coming / Move it / Cancel.
  6. None of the times fit? Join the waitlist; you'll get one email when a matching time opens, held for you for 2 hours.

Deterministic and explainable: 5 answers → studio or home → quiet or regular hours → scissors or clippers → how long (first visit, breaks, buffer) → only the times that fit this child.

The owner app — what got easier for Anya

  • Mornings started with 30 messages → her whole day on one screen — who, which visit, confirmed or not
  • The same questions to every mum → a brief for every child, built from the parent's answers: avoid, use, prepare, parent note, first 5 minutes
  • "Will they remember tomorrow?" → reminders go out on their own; not confirmed? one tap sends a nudge
  • A cancellation meant an empty chair → the freed time is offered to the best-fit family on the waitlist, automatically
  • A sick day meant calling every family → take a day off; one tap asks those families to pick a new time; nothing is cancelled
  • Mum calls — Anya writes it on paper → "Book for a family": the same five questions, on her phone
  • "What worked last time?" → one note after the visit; the next visit starts there
  • A paper diary → two weeks at a glance
  • "Did I send her the address?" → an Outbox of every email sent for her
  • Prices and hours in her head → services, prices, quiet hours, home-visit days — the calendar follows them
  • New families found her by chance → a QR poster for the studio mirror

The waitlist, end to end

The moment I'm proudest of — and the one I almost faked.

  1. Ella's mum finds none of the three times fit → joins the waitlist.
  2. Mila's mum has a tough morning → cancels in one tap.
  3. TYKHO checks everyone waiting for that kind of visit: Ella ✓ quiet first cut, studio, quiet hours; Mark ✗ wants a regular visit; Artem ✗ needs a home visit in Tairova. Best match: Ella, 3 of 3.
  4. Ella's mum gets one email — "A quiet time just opened for Ella", held for 2 hours.
  5. She taps Take this time → booked.
  6. Anya's day shows "Mila cancelled · Ella took this time" — she didn't send a single message.

If nobody answers within 2 hours, a scheduled job passes the slot to the next matching family. "Not this time" passes it on immediately.

Design

  • One calm blue, frosted glass, shape over colour. A monochrome palette in tonal steps — nothing flashing, soft contrast — for children (and parents) who are sensitive to light, noise and surprises.
  • Light and dark themes from day one, tested side by side; parents and Anya keep separate theme preferences.
  • Manrope, large tap targets, calm motion, reduced-motion respected, keyboard and screen-reader labels.
  • Copy speaks as Anya, warm and short: "Tough morning? Moving is free and takes a minute."
  • A design system and styleguide came first, before any booking screen.

How it's built

  • Lovable for the app; Lovable Cloud (Postgres) for data.
  • No double booking at the database level — an exclusion constraint, not just a UI check.
  • Row-level security: parents never read other families' data; the owner role is enforced on the server.
  • Server-validated slots — the same rules (quiet hours, buffers, districts, days off) live in database functions.
  • Scheduled jobs for reminders, offer expiry and a nightly demo reset.
  • Transactional email on the studio's own domain (confirmation, reminder, nudge, waitlist offer, "visit moved", day off).
  • Two installable PWAs, offline-friendly day view for Anya.

Proof before decoration — what testing changed

I tested every flow end to end, as a parent and as Anya, and found buttons that only pretended:

  • "Join the waitlist" led to the normal booking form — no one could actually join. → A real waitlist: database function, confirmation email, private "leave the waitlist" page, and Anya sees who's waiting.
  • "Send a nudge" only showed a toast. → It now sends a real email and shows "Nudge sent — waiting for Olha".
  • Day off only said "message the families". → One tap emails each family a link that opens the move screen directly.
  • "Not this time" left the slot empty. → It now passes the slot to the next matching family.

A security review: every finding checked by hand rather than "fix all".

Results (one demo week)

  • 14 — Bookings — confirmed without a single message
  • ~3 h — Time saved — of messaging (estimate)
  • 2 — Refilled — cancelled slots refilled automatically
  • 0 — Repeated questions — care questions asked twice

What's next

  • Push notifications only for the rare things that truly need Anya
  • Waitlist preferences by day and time; waitlist expiry
  • Owner-configurable days off; going live for a real studio (remove the demo clock and nightly reset)

TYKHO Care, Anna Kovalynska, the studio and the families are fictional; the studio photo is AI-generated. The app, the data flows and the emails are real and working. Built with Lovable for the #lovablechallenge (Lovable × Contra).

TYKHO Care — full walkthrough: booking for kids who find salons hard

Chapters

  • 0:00 Intro
  • 0:03 Parents start here — the site, Meet Anya, light & dark
  • 0:42 Booking — five calm questions, the gentlest visit, only the times that fit
  • 1:43 The confirmation email
  • 2:28 What Anya sees — the visit and the child's brief
  • 3:05 Plans change — cancel from the email in one tap
  • 3:40 The waitlist — the freed slot goes to the best-fit family
  • 4:52 Reminders — one-tap nudge
  • 5:00 A day off — ask families to pick a new time
  • 5:25 Book for a family by phone
  • 5:59 After the visit — notes and families
  • 6:22 Her studio, her rules — two weeks, Outbox, prices, QR poster
  • 6:56 Light and dark

Book as a parent (no login), then sign in as Anya to see the brief your answers created.

Open TYKHO

All projects · Start a project