1. Practice what you preach
Pantalytics adviseert klanten over data-eigenaarschap, open-source tooling en Europese hosting. Maar onze eigen website draaide op Webflow — een Amerikaans platform waar je content vastzit in een proprietary formaat. Exporteren kan alleen via hun API, en dan krijg je JSON met custom objecten die je nergens anders kunt importeren. Dat is inconsistent met wat we verkopen.
We hadden het al langer op de planning, maar het werd tijd om het daadwerkelijk te doen: de website volledig herbouwen op een stack die past bij onze principes. Open-source, self-hosted, Europees gehost, volledig exporteerbaar.
2. Niet alleen een migratie — een herpositionering
Dit was geen kwestie van HTML van A naar B verplaatsen. Pantalytics is het afgelopen jaar verschoven van "data consultancy" naar Agentic AI + Odoo. De website moest dat reflecteren.
Nieuwe pagina's die er niet waren in Webflow:
- Cases — vier concrete projectbeschrijvingen met resultaten
- Werkwijze — hoe een samenwerking eruitziet, van intake tot oplevering
- Contact — met formulier en directe contactgegevens
- Privacy — AVG-compliant privacyverklaring
De bestaande content is herschreven, niet gekopieerd. De 81 blogposts zijn geëxporteerd via de Webflow API met een Python-script, getransformeerd naar schone HTML, en geïmporteerd in Directus via bash-scripts.
3. Waarom deze stack
Elke technologiekeuze heeft een concrete reden. Geen "het is populair" of "we kennen het al" — maar een bewuste afweging op basis van onze principes.
Astro 5 (in plaats van Next.js of Nuxt)
Een marketingwebsite heeft geen JavaScript nodig in de browser. Astro is het enige framework dat standaard 0 KB JavaScript naar de client stuurt. Next.js stuurt altijd een React runtime mee, ook als je alleen statische pagina's bouwt. Astro doet dat niet. Static site generation bouwt al onze 43 pagina's in ~1,5 seconde. File-based routing, geen afhankelijkheid van React of Vue tenzij je dat expliciet toevoegt.
Directus 11 (in plaats van Strapi, Payload of Contentful)
Directus is daadwerkelijk open-source — je kunt het onbeperkt self-hosten zonder betaalde features te missen. Strapi en Payload zijn "open-core": essentiële functionaliteit zit achter een betaalmuur. Contentful is volledig proprietary. Directus draait op PostgreSQL. Dat betekent: je data zit in een standaard relationele database die je kunt exporteren met pg_dump, querien met SQL, of koppelen aan elk ander systeem. Geen proprietary dataformaat.
Coolify v4 (in plaats van Vercel of Netlify)
Coolify is een open-source, self-hosted Platform-as-a-Service. Het biedt dezelfde developer experience als Vercel — git push triggert een deploy — maar draait op je eigen server. Geen vendor lock-in, geen US-cloudafhankelijkheid, volledige controle over je deployment pipeline.
Hetzner CAX11 (in plaats van AWS of GCP)
Duits datacenter, GDPR by design. De CAX11 is een ARM64-server met 2 vCPU's en 4 GB RAM voor €3,29 per maand. Dat is geen tikfout. Daarop draaien Coolify, Directus, PostgreSQL, Redis, Traefik en de website zelf — allemaal tegelijk.
PostHog EU (in plaats van Google Analytics)
Open-source analytics met een EU-gehoste instance. Geen cookies nodig voor basale analytics, dus geen cookiebanner. Google Analytics stuurt bezoekersdata naar de VS — dat past niet bij onze principes.
Brevo (in plaats van SendGrid)
Brevo (voorheen Sendinblue) is een Frans bedrijf. GDPR-compliant transactionele e-mail. SendGrid is Twilio, Amerikaans, en valt onder de CLOUD Act.
4. Eén dag, van begin tot eind
Dit is wat er daadwerkelijk gebeurde, in chronologische volgorde.
Ochtend
- Webflow API-export — Python-script dat alle 81 blogposts, categorieën en metadata ophaalt en transformeert naar Directus-compatibel JSON
- Directus opzetten — collections, relaties, permissies en content-import via bash-scripts
- Astro frontend — layouts, componenten, pagina's, design tokens, self-hosted fonts (Lexend en Instrument Sans als woff2, geen Google Fonts CDN)
Middag
- Dockerfile — multi-stage build: Node 20 voor de Astro-build, Caddy 2 Alpine voor het serveren van statische bestanden
- Coolify deployment — server provisioning op Hetzner, Directus als one-click service, website als Dockerfile-app
- DNS en SSL — domein verwijzen naar Hetzner, Let's Encrypt certificaten via Traefik, routing configureren
Avond
- PostHog integratie — analytics script toevoegen, EU-instance configureren
- Auto-deploy pipeline — Directus Flow die bij elke blogpost-wijziging een Coolify webhook triggert: content → live in ~60 seconden
- Security audit — HTTP headers controleren, Directus-permissies aanscherpen, firewall-regels op de Hetzner server
5. Wat we tegenkwamen
Geen migratie zonder problemen. Dit zijn de vijf issues die de meeste tijd kostten, met de oplossingen.
ARM64 en PostgreSQL
Coolify's standaard Directus-template gebruikt postgis/postgis met platform: linux/amd64. Op een ARM64-server crasht dat direct. Oplossing: vervang door postgres:16-alpine, dat native ARM64-images heeft.
Directus 11 breaking changes
Directus 11 heeft het permissiemodel fundamenteel gewijzigd. Permissions zijn gekoppeld aan policies, niet aan roles. De public policy moet je opzoeken via het /policies-endpoint. Singletons gebruiken PATCH, niet POST.
Auto-deploy trigger type
Directus Flows hebben verschillende trigger types. Een trigger van het type "action" voert geen request-operations uit — het logt ze, maar stuurt ze niet. Na een uur debuggen bleek dat het trigger type "filter" wél correct werkt voor webhook-calls naar Coolify.
Docker networking tijdens de build
Astro haalt tijdens de build content op van Directus. Maar localhost:8055 is niet bereikbaar vanuit een Docker build-container. Oplossing: de sslip.io URL van Directus gebruiken, die via Traefik routeert.
Thumbnail-relatie in Directus
Een bestandsveld in Directus vereist een expliciete relatie naar directus_files plus het special: ["file"]-attribuut. Zonder dat attribuut kun je een bestand selecteren maar niet opslaan. Dit staat nergens duidelijk gedocumenteerd.
6. Het resultaat
| Aspect | Webflow | Nieuwe stack |
|---|---|---|
| Hosting | Verenigde Staten | Duitsland (Hetzner) |
| Data-eigenaarschap | Beperkt (proprietary formaat) | Volledig (PostgreSQL + REST API) |
| Analytics | Geen | PostHog EU (privacy-first) |
| Vendor lock-in | Ja | Nee (alles open-source) |
| CMS | Visueel, beperkt | Headless, API-first |
| Auto-deploy | N.v.t. | Content → live in ~60s |
| Performance | Goed | Lighthouse >90, 0 KB JS |
| Kosten | ~$30/maand | ~€5/maand |
| Security audit | Niet mogelijk | Headers, permissies, firewall geaudit |
De website laadt sneller, kost minder, en we hebben volledige controle over elke laag: van de database tot de deployment pipeline.
7. AI als ontwikkelpartner
Claude Code is gedurende het hele proces ingezet — architectuurbeslissingen, implementatie, deployment-debugging, security audit. Wat normaal een week kost, was in één dag klaar.
Niet omdat AI perfecte code schrijft. Dat doet het niet. Maar het elimineert de repetitieve onderdelen: boilerplate genereren, configuratie-opties opzoeken, API-fouten diagnosticeren, security headers samenstellen. Jij focust op de beslissingen, de AI handelt de uitvoering af.
Concreet: het Webflow-exportscript, de Directus-importscripts, de Astro-componenten, de Dockerfile, de Caddyfile — allemaal gegenereerd en iteratief verbeterd met Claude Code. De architectuurkeuzes en contentstrategie zijn menselijk; de implementatie is een samenwerking.
Maar er zit een spanning in. Claude Code is van Anthropic, een Amerikaans bedrijf. Dezelfde logica waarmee we Webflow vervingen — data-eigenaarschap, Europese hosting — geldt ook voor onze AI-tooling. We onderzoeken actief Europese en open-source alternatieven voor ons ontwikkelproces. Datasoevereiniteit is geen eenmalig project, het is een doorlopend proces. Elke stap telt.
8. Takeaways
- Practice what you preach dwingt betere beslissingen af. Als je klanten adviseert over data-eigenaarschap, moet je eigen infrastructuur dat weerspiegelen.
- Self-hosting is in 2026 verrassend toegankelijk. Coolify maakt deployment net zo eenvoudig als Vercel, maar dan op je eigen server.
- AI versnelt het hele proces, niet alleen het schrijven van code. Architectuurkeuzes, debugging, security audits, documentatie — AI is bruikbaar in elke fase.
- Datasoevereiniteit is een doorlopende reis. Je vervangt niet in één keer al je tools. Maar elke stap — van Webflow naar Astro, van Google Analytics naar PostHog, van SendGrid naar Brevo — brengt je dichter bij volledige controle.
- Je hebt geen groot budget nodig, je hebt heldere principes nodig. Onze volledige stack kost minder dan €10 per maand. De investering zit in kennis en tijd, niet in licenties.
9. Zelf aan de slag?
Pantalytics helpt bedrijven met dezelfde transitie: van US-hosted, closed-source platforms naar een open, Europese stack met volledige data-eigenaarschap. Of het nu gaat om je website, je CMS, je analytics of je complete IT-infrastructuur.
Benieuwd wat we voor jouw organisatie kunnen betekenen? Neem contact op voor een vrijblijvend gesprek.