Espaço Dora Santos
Brand, website and online booking for a hair salon in Cachoeira Paulista, Brazil. Live hair strands on the screen, a leaf-comb that carries you from page to page, and free slots read straight from Dora's calendar.
Dora is a hairdresser in Cachoeira Paulista, Brazil, and she sees every client from start to finish, one appointment at a time. For her salon I made the whole brand and the website, from the first logo sketch to the calendar that confirms a booking on its own.
The brand
I drew nine logo concepts and Dora picked the leaf-comb: a green leaf cut by a golden comb, with “Espaço” in script above “DORA SANTOS”. It grew into the Instagram profile and posts, the business card, an A5 flyer, a banner, the Pix payment sign, short reels and frames for client photos on Google. The pieces are generated by script, with the text turned into outlines, so they print the same at any shop.

The website
The top of the page is cream, full of wavy hair strands that straighten when the cursor or a finger runs through them, then relax again. Click a link and the leaf-comb flies to the middle of the screen, combs the strands, and the next page opens out of it. Clicks make sounds, synthesized on the spot with no audio files, and a button in the header turns them off.
To book, you pick a service, a day and a free slot, and the confirmation arrives right away. A slot is free only if it is within opening hours, has no other booking and no event on Dora’s Google Calendar. Once confirmed, the event goes into her calendar. In the backoffice she sees the bookings, cancels them, sends a ready-made confirmation over WhatsApp, and edits services and opening hours.
How it is built
A single React Router app on Cloudflare Workers, with the data in D1 and the calendar through the Google Calendar API. A booking checks the slot again against the calendar and the database before it is saved, and the database rejects overlapping bookings, so two clients never get the same slot.
The site has to stay light on any phone, so it measures the device before the first paint and turns on only the effects that device can afford, with framebudget. The strands run in a worker, off the main thread, and the public pages are served from the Worker cache. On Lighthouse mobile, the public pages score 100.