Naar de inhoud

Case · Reizen en toerisme

Globalia.

Globalia, de Spaanse reisgroep, wilde haar mensen en haar publieke website samenbrengen op één platform. Polargate bouwde dat op één repository: een medewerkersgids die synchroon loopt met Microsoft 365, een digitaal visitekaartje met passen voor Apple Wallet en Google Wallet, en de publieke site van de groep, leesbaar gemaakt voor AI-crawlers zonder die opnieuw te bouwen.

In een kantoor boven de stad in de schemering werkt een webredacteur een pagina van een van meerdere merksites bij, met een mobiele preview ernaast

In het kort

Klant
Globalia
Sector
Reizen en toerisme
Jaar
2026
Diensten
BuildGrow
Live site
globalia.com
Stack
ViteReactTypeScriptTailwind CSSshadcn/uiSupabasePostgreSQLDenoMicrosoft 365Microsoft Entra IDVercel

01 · Globalia

De uitdaging.

Globalia heeft meerdere consumentenmerken en wilde dat haar interne platform en haar publieke website samen een stap verder gingen. De groep wilde een medewerkersgids die gelijke tred houdt met Microsoft 365 op de schaal van een grote groep, één kaartje en één identiteit per merk, en een publieke site waarvan het nieuwsarchief gelezen en geciteerd kan worden door de assistenten waar mensen nu aan vragen wat ze vroeger intypten.

Bijvoorbeeld: 99 geautomatiseerde tests voor de module, vanaf nul. NationwideLegal

02 · Globalia

Wat we bouwden.

Polargate bouwde het geheel als één webplatform op één repository, zodat het interne deel en de publieke site dezelfde code, build en deploy delen. De synchronisatie van de gids draait op Microsoft Graph delta-queries en is hervatbaar, met een opgeslagen vervolgverwijzing en een tijdsbudget per run, en medewerkers melden zich aan met hun eigen Microsoft 365-account, zodat de accounts in beheer van de groep blijven. De gids kent drie privacylagen en serveert avatars ondertekend en met vervaltijd. Daarbovenop zit het digitale visitekaartje: het wordt vanuit de gids aangemaakt, de medewerker claimt het bij de eerste keer aanmelden via SSO zonder dat de publieke link verandert, de Wallet-passen worden op de server ondertekend en contactgegevens komen alleen vrij tegen een ondertekend toegangstoken. Elk merk van de groep wordt toegewezen op e-maildomein. Op de publieke site injecteert edge middleware echte inhoud, uitsluitend voor crawlers, zonder migratie naar statische generatie en zonder wijziging aan de applicatie.

Een laptop op een werkplek in een open kantoor op een regenachtige ochtend, met een Spaanstalig intranet voor medewerkers met de startpagina, nieuws en snelkoppelingen, terwijl achterin collega's voorbijlopen.
Nagespeelde scène

Bijvoorbeeld: 2 talen live op de site, Spaans en Engels. Global Dynamic Security Group

03 · Globalia

Het resultaat.

De gids loopt run na run gelijk met Microsoft 365. Op de publieke site geeft één nieuwsbericht crawlers nu 11.421 tekens leesbare inhoud, en zijn 707 gearchiveerde artikelen leesbaar. In de controle van augustus 2026 telde de database 39 tabellen met row-level security en nul fouten, met de row-level security-policies samengebracht tot één policy per rol en actie. Voor de deploy: typecheck, 18 tests, de webbuild en de appbuild groen, en 20 routes nagelopen op desktop en mobiel.

repository voor het interne platform, de gids en de publieke site
1
tekens echte inhoud die een AI-crawler van een nieuwsbericht krijgt
11.421
gearchiveerde nieuwsartikelen die nu leesbaar zijn voor AI-crawlers
707
tabellen met row-level security en nul fouten in de controle van augustus 2026
39

Bijvoorbeeld: 6 gebruikelijke beveiligingsheaders die vooraf ontbraken. B2B-dienstverlener, Europa

04 · Globalia

Hoe we het deden.

Bijvoorbeeld: 11 modules opgeleverd in fase 1. Elite Smart Build

De context

Globalia is een Spaanse reisgroep met meerdere consumentenmerken. Polargate bouwde het corporate webplatform van de groep: een intern webplatform met de medewerkersgids die synchroon loopt met Microsoft 365, een digitaal visitekaartje met passen voor Apple Wallet en Google Wallet, en de publieke site van de groep, alles in één repository.

Die ene repository is geen detail. Het interne platform en de publieke site delen dezelfde code, dezelfde build en dezelfde deploy, dus een merkwijziging gebeurt één keer in plaats van per site. De stack is React, Vite, TypeScript, Tailwind en shadcn/ui aan de voorkant, Supabase aan de achterkant (Postgres met row-level security, Edge Functions op Deno, Storage en Auth), Microsoft Graph voor de gids en het aanmelden, Apple PassKit en de Google Wallet API voor de passen, en Vercel als hosting. De backend draait in één eigen Supabase-project.

De gids: delta-queries en een hervatbare synchronisatie

Medewerkers melden zich aan met hun eigen Microsoft 365-account, en de gids leest uit datzelfde Microsoft 365, zodat de accounts onder beheer van de groep blijven en niemands gegevens opnieuw in een tweede systeem worden getypt.

De synchronisatie draait op Microsoft Graph delta-queries, dus elke run haalt alleen op wat is gewijzigd in plaats van de hele gids opnieuw.

De synchronisatie is van opzet hervatbaar: de vervolgverwijzing wordt bewaard, elke run krijgt een tijdsbudget en de volgende run gaat verder waar de vorige stopte in plaats van opnieuw te beginnen. Alleen zo raakt een synchronisatie op de schaal van een grote groep klaar.

Dubbelingen worden opgelost met een omkeerbare samenvoegregel op identiteit, die de aliassen van één persoon samenbrengt en nooit twee verschillende mensen samenvoegt die toevallig dezelfde naam hebben.

Drie privacylagen

Een medewerkersgids is persoonsgegeven, dus het is niet één dataset. Het zijn er drie. De publieke laag bevat professionele informatie. De tweede bevat zakelijke contactgegevens. De derde, de persoonlijke gegevens, zit achter een expliciete toestemming. Avatars worden ondertekend en met vervaltijd geserveerd, zodat de URL van een foto geen permanente deur is.

Het digitale visitekaartje

Elke medewerker heeft een publieke kaartpagina, met een spiegelroute in het Engels, een vCard-download, knoppen voor Apple Wallet en Google Wallet en een QR-code in de huisstijl. Kaartjes worden vanuit de gids aangemaakt en claimen zichzelf zodra de medewerker zich via SSO aanmeldt, waarbij de publieke link niet verandert, dus wat al gedrukt is blijft geldig.

Passen worden op de server ondertekend, nooit in de browser

Apple-passen krijgen een manifest met een hash per bestand en een PKCS#7-handtekening. Google-passen krijgen een JWT die met RS256 is ondertekend. De passen werken met QR, niet met NFC.

Contactgegevens komen alleen vrij tegen een ondertekend toegangstoken, stabiel per kaart zodat gedrukte QR-codes niet verlopen. Het veldcontract werkt met een allowlist, met expliciet verboden velden, het mobiele nummer standaard uit en een opschoonfunctie als extra verdedigingslaag. Kaartjes worden niet geïndexeerd.

De vCard volgt RFC 2426, met de foto in base64 ingesloten omdat iOS geen foto's via een URL importeert, en de pagina wijst visueel aan welke knop het contact opslaat.

Meerdere bedrijven, op e-maildomein

Globalia bestaat uit meerdere bedrijven, dus het platform is multi-bedrijf. Elk merk wordt toegewezen op e-maildomein en draagt zijn eigen naam en identiteit op het kaartje. De toegang is rolgebaseerd en geverifieerd.

De publieke site, leesbaar voor AI-assistenten

Een moderne webapplicatie wordt in de browser opgebouwd, en vrijwel geen enkele AI-crawler voert JavaScript uit. De lezer en de crawler krijgen dus niet dezelfde pagina, en dat gat sluiten was de opdracht op de publieke site.

Dat hebben we gedaan zonder de site naar statische generatie te migreren. Edge middleware injecteert, uitsluitend voor crawlers, title, description, canonical, hreflang, Open Graph, JSON-LD en een echte body met een kop en alinea's. Mensen krijgen nog steeds de applicatie zoals die was, en noch de build noch de app is veranderd.

De cijfers zijn het punt. Eén nieuwsbericht geeft een crawler nu 11.421 tekens leesbare inhoud. Over zes routes en hun taalspiegels krijgen crawlers nu 756 tekens op de homepage en 200 tot 260 op de onderliggende pagina's. 707 gearchiveerde artikelen zijn leesbaar.

Wat er verder in zit

Meldingen worden niet uitgewaaierd: één melding is één record met een doelgroep, en de feed van elke gebruiker wordt ter plekke berekend, met respect voor de voorkeuren en de verplichte typen. Er is een visueel bord met personeelsvoordelen en aanbiedingen, gepubliceerd door het HR-team en zichtbaar voor iedereen. Het platform is bovendien een installeerbare PWA die de gebruiker waarschuwt bij een update, en gebruikt Supabase Realtime in plaats van periodiek pollen.

Waar het nu staat

Gemeten, niet geprojecteerd. In de controle van augustus 2026: 39 tabellen met row-level security en nul fouten, en de row-level security-policies samengebracht tot één policy per rol en actie, wat leesbaarder is en goedkoper draait.

Over gewicht: het hercoderen van de 153 frames van de hero op de homepage naar WebP scheelde 38% zonder zichtbaar verschil, één component ging van 739 KB naar 3,6 KB door alleen de iconen te laden die het gebruikt, en een grafiekenbibliotheek van 423 KB is naar lazy loading verplaatst.

Voor de deploy: typecheck, 18 tests, de webbuild en de appbuild groen, en 20 routes nagelopen op desktop en mobiel.

FAQ

Vragen over dit project.

Kunnen we onze medewerkersgids vanuit Microsoft 365 synchroniseren zonder handmatig kopiëren?
Ja, met Microsoft Graph delta-queries: elke run haalt alleen op wat is gewijzigd, niet de hele gids. Waar het meestal misgaat is de omvang. Een synchronisatie die bij elke run opnieuw begint komt op de schaal van een grote groep nooit rond, dus deze is hervatbaar gebouwd: de vervolgverwijzing wordt bewaard, elke run krijgt een tijdsbudget en de volgende run gaat verder waar de vorige stopte. Die houdt nu de hele gids van een grote groep synchroon. Medewerkers melden zich aan met hun eigen Microsoft 365-account, en de gids levert gegevens in drie privacylagen, zodat professionele informatie, zakelijke contactgegevens en persoonsgegevens niet dezelfde dataset zijn.
Is het veilig om elke medewerker een visitekaartje in Apple Wallet en Google Wallet te geven?
Dat is het, als het ondertekenen op de server blijft en het kaartje wordt behandeld als wat het is, een publieke pagina. Apple-passen worden ondertekend met een manifest en PKCS#7, Google-passen met een JWT op RS256, en geen enkele ondertekeningssleutel bereikt ooit de browser. Contactgegevens komen alleen vrij tegen een ondertekend toegangstoken, stabiel per kaart zodat gedrukte QR-codes blijven werken. De velden die mogen verschijnen staan op een allowlist met expliciet verboden velden, het mobiele nummer staat standaard uit en kaartjes worden niet geïndexeerd.
Moeten we onze website eerst als statische HTML herbouwen voordat AI-assistenten die kunnen lezen?
Nee. Statische generatie is het betere antwoord op lange termijn, maar niet het enige, en op een draaiende corporate site zelden het snelste. Hier injecteert edge middleware title, description, canonical, hreflang, Open Graph, JSON-LD en een echte body met een kop en alinea's, uitsluitend voor crawlers. Mensen krijgen de applicatie ongewijzigd, en noch de build noch de applicatie is aangepast. Gemeten resultaat: één nieuwsbericht geeft crawlers nu 11.421 tekens leesbare inhoud, en 707 gearchiveerde artikelen zijn leesbaar. Kijk eerst of je eigen robots-regels AI-crawlers uitsluiten, want veel regels doen dat nog steeds.

Bijvoorbeeld: 100 / 100 / 100 Lighthouse mobiel: toegankelijkheid, best practices, SEO. KD.tech

Volgend project

B2B-dienstverlener, Europa.

Zakelijke dienstverlening

Een bedrijfswebsite hardenen die door een DNS-filter werd geblokkeerd

Bijvoorbeeld: 4 dagen van diagnose tot de nieuwe backend draaide. Concert Music Festival

Beginnen

Vertel ons wat je wilt bouwen.

Websites, apps, systemen op maat en AI voor bedrijven die ze binnen weken in productie nodig hebben. Vul het formulier in of plan een gesprek van 30 minuten: een senior engineer antwoordt binnen twee werkdagen met een eerste inschatting van scope, planning en prijs.

Wat heb je nodig?
Budget
Wanneer

Minstens tien tekens.

Schriftelijk antwoord binnen twee werkdagen. Geen nieuwsbrief, geen automatische mails.

Liever de volledige briefing?

Eerste stap

Discovery Sprint

Twee weken om scope, architectuur en prijs vast te leggen voordat er iets wordt gebouwd.

Geen prijslijst. Je krijgt na een kort gesprek een schriftelijke offerte op maat.

Daarna, om te bouwen, altijd tegen een vaste prijs

Nog niet zover?

AI-native digitale studio voor middelgrote bedrijven

POLARGATE, S.L. · CIF B24895005
Calle Electrónica 6, 28027 Madrid, Spanje