← cd ../
// local-business

Massage Lab.case

Mijn eigen massagestudio in Dénia (ES). Een eigen Astro-site in vijf talen op Cloudflare, boeken via Fresha en WhatsApp, lokale SEO en een teamdashboard voor cadeaubonnen.

year
2026
role
Eigenaar · ontwerp, ontwikkeling & SEO
status
Live
stack
#Astro #Cloudflare Workers #D1 · R2 #i18n · Local SEO
massagelab.es
Massage Lab: screenshot op desktop
Massage Lab open_live() ↗

Probleem

Massage Lab draaide op Shopify. Daardoor zag een dienstenbedrijf eruit als een webshop: elke behandeling was een product met een winkelwagen, terwijl het echte boeken al in Fresha gebeurde. De site had alleen Spaans en Engels, aan een kust waar veel bewoners en bezoekers Nederlands, Duits of Frans spreken. En de cadeaubonnen zaten in Shopify, los van hoe het team echt werkt.

Oplossing

Ik verving de winkel door een statische Astro-site, geserveerd vanaf Cloudflare Workers.

  • Vijf talen (ES, EN, FR, NL, DE) met vertaalde URL’s per taal, bijvoorbeeld /de/behandlungen/ en /fr/soins/. Eén centrale route-map maakt elke pagina, de hreflang-links en de sitemap, zodat de talen niet uit elkaar kunnen lopen.
  • Behandelingen in drie categorieën (massages, ontharing, gezichtsbehandelingen), elk met prijzen per duur. Een boekknop opent Fresha direct op die behandeling, of WhatsApp met behandeling en duur al ingevuld.
  • Cadeaubonnen samenstellen op de site: een bedrag of een behandeling, namen en een boodschap.
  • Migratie zonder verlies van posities: de 146 URL’s uit de oude Shopify-sitemap werden 604 exacte 301-regels (één per oude URL en taalvariant, geen wildcards). Een script controleert dat elke regel in één stap uitkomt op een pagina die 200 geeft.
  • Lokale SEO: 14 landingspagina’s voor plaatsen binnen zo’n 30 km (Jávea, Calpe, Moraira, Benissa en meer). Gestructureerde data (HealthAndBeautyBusiness) op elke pagina met adres, telefoon en openingstijden, Service-data met prijzen per behandeling, FAQPage op de veelgestelde vragen. Sitemap, robots.txt en een gegenereerde llms.txt, zodat AI-zoekmachines de behandelingen en prijzen goed hebben. Controles bij de build valideren elk JSON-LD-blok, de canonicals en de wederzijdse hreflang-links.
  • Design: Newsreader voor koppen, Red Hat Text voor lopende tekst en het Distant Stroke-script in de hero, warm bijna-zwart op gebroken wit met een mosgroen accent.

Het teamdashboard

Het deel waar ik het meest trots op ben is niet openbaar. In een besloten dashboard regelt het team (eigenaar en medewerkers) de hele cadeaubonflow:

  • Een aanvraag via de website komt in het dashboard binnen met een referentienummer. Het team zet hem op betaald, en de klant krijgt een persoonlijke link om te betalen, de bon als pdf te downloaden en via WhatsApp te delen. De ontvanger krijgt een eigen cadeaupagina met de bon en de opdracht, zonder prijs of betaalgegevens.
  • De pdf is de echte gedrukte bon (voorkant en ticketkant), in de browser ingevuld, met een QR-code. Medewerkers die hem scannen komen op die bon in het dashboard; een klant komt op de boekpagina in de eigen taal.
  • Bonnen hebben een saldo. “Inwisselen” haalt er een bedrag of behandeling af in één atomaire stap, dus een bon kan nooit twee keer gebruikt worden of onder nul gaan. Elke wijziging wordt gelogd: wie, wanneer, oude en nieuwe waarde.
  • “Vandaag versturen” zet op een rij wie een bericht moet krijgen: onbetaalde aanvragen ouder dan 48 uur, bonnen die bijna verlopen en de bezoeken van gisteren voor een reviewverzoek. Eén tik opent WhatsApp met de tekst in de taal van de klant. Er wordt niets automatisch verstuurd.
  • Verder: een maandoverzicht met CSV-export, import van de oude Shopify-cadeaubonnen, de nieuwste Google-reviews, een melding voor de website en gebruikersbeheer. De interface is er in alle vijf talen.

Het draait op dezelfde Worker, met Cloudflare D1 als database en elke nacht een back-up naar R2. Wachtwoorden zijn gehasht met PBKDF2, inlogpogingen en bestellingen zijn begrensd en klantlinks worden alleen als hash opgeslagen.

Resultaat

Live op www.massagelab.es sinds 29 oktober 2026, in vijf talen met 255 pagina’s in de sitemap. De oude Shopify-URL’s sturen in één stap door naar de juiste pagina in dezelfde taal. Op het moment van schrijven toont de site een score van 4,9 uit 104 Google-reviews. Cadeaubonnen worden verkocht, verstuurd en ingewisseld in het eigen dashboard van het team.

Massage LabMassage LabMassage LabMassage Lab