Naar de inhoud
POLARGATE
Hospitality: 4-sterren allesinclusief resorthotel, Caribisch gebied

Een resortwebsite die Google, social media en AI-assistenten echt kunnen lezen

Polargate maakte van de tweetalige website van een Caribisch resort met 349 kamers een volledig statische, beveiligde site met gestructureerde data voor AI-zoekmachines, en houdt die bij met een maandelijkse retainer en een automatische audit op de eerste dag van elke maand.

Homepage van hotelmarien.com: het logo van Marien Puerto Plata en het menu boven een luchtfoto van de zwembaden van het resort, blauwe ligbedden, palmen en gebouwen.
hotelmarien.com
22
publieke routes vooraf gerenderd als statische HTML
2
talen met wederzijdse hreflang (ES/EN)
98 KB
mobiele hero-afbeelding, terug van circa 288 KB
136 KB
social-previewafbeelding, terug van 1,74 MB
33
bevestigde bevindingen opgelost in de auditcyclus van augustus 2026
3
P0-problemen opgelost en live geverifieerd in juni 2026

Het probleem

De site zag er goed uit en las prettig, maar crawlers zagen iets anders. De inhoud werd pas in de browser opgebouwd, dus elke subpagina gaf Google, social scrapers en AI-assistenten de titel, canonical en Open Graph-tags van de homepage mee. Onbekende URL's antwoordden met HTTP 200 in plaats van een echte 404. De Content-Security-Policy stond in een meta-tag, waar de browser de clickjacking-regel negeert. De gestructureerde data bevatte een gemiddelde beoordeling die naar geen enkele echte bron te herleiden was. En de backend hing nog altijd aan het no-codeplatform waarop de site was opgezet.

Wat we bouwden

Polargate voerde een black-box- en white-box-audit uit op vier pijlers (beveiliging, SEO, structuur en zichtbaarheid in AI-zoekmachines) en herstelde de site in fasen. Eerst echte HTTP-beveiligingsheaders, daarna een echte 404-pagina en een statische head per route, en vervolgens een volledige verhuizing weg van het no-codeplatform naar een eigen Supabase-project en een statische build met vite-react-ssg. Alle 22 publieke routes leveren nu complete HTML in het Spaans en het Engels, met schema.org-graphs die uit de vertaalbestanden worden gegenereerd, llms.txt en llms-full.txt, en een robots.txt die AI-crawlers toelaat.

Het resultaat

De drie P0-bevindingen van juni 2026 zijn opgelost en in productie geverifieerd, en de augustuscyclus loste 33 bevestigde bevindingen op. De site levert nu complete HTML per route en per taal aan Google, social scrapers en AI-assistenten, draait op infrastructuur die Polargate volledig zelf beheert en laadt een mobiele hero-afbeelding van ongeveer 98 KB in plaats van 288 KB. Een geplande audit bekijkt site en repository op de eerste dag van elke maand en rapporteert; deployen doet die nooit zelf. Polargate claimt hier geen bezoekers- of boekingscijfers: commerciële resultaten hangen van veel meer af dan van een website.

Stack

  • React
  • Vite
  • TypeScript
  • Tailwind CSS
  • shadcn/ui
  • React Router
  • TanStack Query
  • Supabase
  • PostgreSQL
  • Deno
  • Resend
  • Vercel
  • Node.js
  • GA4
  • Search Console
  • GitHub
  • Claude
  • OpenAI
hotelmarien.com

Het uitgangspunt

Hotel Marien is een allesinclusief 4-sterrenresort met 349 kamers in Puerto Plata, aan de noordkust van de Dominicaanse Republiek. Polargate ontwierp en bouwde de tweetalige website, opgeleverd in maart 2026, en onderhoudt die sindsdien met een maandelijkse retainer. Het project omvatte de Paraty Tech-boekingsengine, technische en contentgerichte SEO, beveiligingshardening, hosting en back-ups, en het inrichten van analytics met GA4, Tag Manager en Search Console. Sinds juli 2026 gebruikt het hotel ook een gastenapp in eigen huisstijl op Estevano, het hotelplatform van Polargate, op marien.estevano.com: een AI-conciërge, reserveringen voor restaurant en spa, roomservice en meldingen, met een QR-poster voor de receptie die uit de merkkleuren van het hotel is gegenereerd.

Wat de audit liet zien

In juni 2026 voerde Polargate een black-box- en white-box-audit uit op vier pijlers: beveiliging, SEO, structuur en zichtbaarheid in AI-zoekmachines.

  • Onbekende URL's gaven HTTP 200 terug in plaats van een echte 404, waardoor zoekmachines typefouten en dode links als geldige pagina's behandelden.
  • De Content-Security-Policy stond in een meta-tag, waardoor de frame-ancestors-regel nooit werkte en de bescherming tegen clickjacking niets deed.
  • Elke subpagina gaf de titel, canonical en Open Graph-tags van de homepage mee, omdat de inhoud pas in de browser werd opgebouwd.
  • De gestructureerde data bevatte een gemiddelde beoordeling die niet aan een echte bron te toetsen was.

Drie daarvan waren P0. Alle drie zijn dezelfde maand opgelost en in productie geverifieerd.

Wat we opnieuw hebben gebouwd

  • Echte HTTP-beveiligingsheaders: CSP met frame-ancestors none, X-Frame-Options DENY, HSTS met preload, nosniff, Referrer-Policy en Permissions-Policy.
  • Eerst een statische head per route, daarna een volledig statische build met vite-react-ssg op Vite, React en TypeScript, met Tailwind en shadcn/ui in de interface. Alle 22 publieke routes leveren complete HTML in het Spaans en het Engels, met wederzijdse hreflang en één centrale routebron in de code.
  • Een volledige verhuizing weg van het no-codeplatform naar een eigen Supabase-project: het contactformulier als Deno edge function, met CORS beperkt tot het hoteldomein, een honeypot aan serverzijde, geforceerde RLS op de berichtentabel en verzending via Resend vanaf een geverifieerd subdomein.
  • Schema.org-graphs die uit de vertaalbestanden worden gegenereerd: Hotel, vijf HotelRoom-nodes, vijf Restaurant-nodes, de spa, FAQPage, BreadcrumbList en een WebPage-node met dateModified en speakable. Plus llms.txt en llms-full.txt, en een robots.txt die AI-crawlers toelaat en bandbreedteslurpers blokkeert.
  • De oncontroleerbare beoordeling is vervangen door de echte TripAdvisor-score van het hotel en twee zichtbare gastreviews, met links naar de geverifieerde profielen op TripAdvisor, Booking en Google Maps.

Hoe het nu draait

De site draait op Vercel met DNS in Route 53, en de analytics loopt via GA4, Tag Manager en Search Console, pas na toestemming. Het performancewerk bracht de mobiele hero-afbeelding met srcset terug van ongeveer 288 KB naar ongeveer 98 KB, en de social-previewafbeelding van 1,74 MB naar 136 KB. Op de eerste dag van elke maand bekijkt een geplande Claude-routine de live site en de repository (AI-zoekmachines, Core Web Vitals, kapotte zaken, beveiliging), verifieert elke bevinding kritisch en rapporteert. Deployen doet die routine nooit zelf. Polargate beoordeelt de bevindingen, voert de fixes door en stuurt de hoteldirectie een onderhoudsrapport in begrijpelijke taal.

FAQ

Vragen over dit project

Hoe lang heeft dit geduurd?
Polargate leverde de website op in maart 2026. Het herstelwerk van juni 2026 ging in drie fasen live: beveiligingsheaders en heads per route op de dag van de audit, de gestructureerde data en het geharde contactformulier een week later. De cyclus van augustus 2026, waarin de site van het no-codeplatform af ging en statisch werd herbouwd, duurde één sprint. Daarna is het een maandelijks ritme.
Kunnen jullie dit doen met onze boekingsengine?
Ja. De site van Marien werkt met de Paraty Tech-boekingsengine die het hotel al gebruikte, en Polargate heeft die niet vervangen. Dezelfde aanpak geldt voor andere engines: de website blijft de snelle, indexeerbare laag die vragen beantwoordt en gekwalificeerd verkeer doorgeeft, en we houden de overgang schoon zodat toestemming, analytics en tracking meegaan naar de engine.
Onze site is op een no-codeplatform gebouwd. Valt die te redden of moeten we opnieuw beginnen?
Meestal wel. Bij Marien behield Polargate het ontwerp en de code, verwijderde de tooling van het platform, verhuisde de database en functies naar een Supabase-project van de klant, zette de build om naar statische generatie en wees de omgevingsvariabelen via de API opnieuw toe. De site bleef de hele tijd in de lucht. Opnieuw beginnen is alleen zinnig als ook het product of de content moet veranderen.
Komt ons hotel hierdoor in ChatGPT en de AI-antwoorden van Google?
Dat kan niemand garanderen, en Polargate doet dat ook niet. Wat we wel kunnen: de redenen wegnemen waarom een assistent je overslaat. Complete HTML per route in plaats van een lege pagina, één helder antwoord onder elke kop, gestructureerde data die overeenkomt met de zichtbare tekst, llms.txt en een robots.txt die de zoek- en antwoordcrawlers toelaat. Geciteerd worden hangt nog steeds af van autoriteit en actualiteit, en dat kost tijd.
Wat houdt het maandelijkse onderhoud precies in?
Op de eerste van elke maand bekijkt een automatische audit de live site en de repository (AI-zoekmachines, Core Web Vitals, kapotte zaken en beveiliging) en verifieert elke bevinding voordat die wordt gemeld. Polargate bepaalt daarna wat er wordt hersteld, voert het door, verifieert het in productie en stuurt het hotel een rapport in begrijpelijke taal. Contentverzoeken, zoals het opnieuw bewerken van foto's, lopen in dezelfde cyclus mee. De audit deployt nooit zelf.

Gerelateerd werk

INITIATE

Start de motor

Vertel ons in een paar korte vragen wat je bouwt. Een senior engineer antwoordt binnen twee werkdagen schriftelijk met een eerste inschatting van scope, planning en prijs.