De meeste websites spreken één taal. Zodra een bedrijf een tweede nodig heeft, wordt het lastig: een vertaalplugin die erbovenop wordt geschroefd, een tweede kopie van de site die je synchroon moet houden, of een duurder abonnement alleen om “Hello” naast “Hallo” te zetten.
FolioPress begon vanuit het tegenovergestelde idee: een pagina is geen pagina met vertalingen eraan vastgeplakt – ze is al haar talen tegelijk. De titel, het adres, het menu, de tags, wat Google ziet: alles bestaat in elke taal die je kiest, vanaf de eerste minuut.
Het begon allemaal met de wens om een zelfgebouwd CMS te vervangen waar achteraf meerdere talen in waren geschroefd. Toen ik naar alternatieven zocht, ontdekte ik dat ze allemaal jammerlijk faalden in het integreren van meertalige content in een eenvoudig te gebruiken websitebouwer.
Dit is een kijkje achter de schermen: hoe het geheel in elkaar zit, de afwegingen erachter en de dingen die onderweg stukgingen.
Een bezoek reist van links naar rechts. De verkeerstoren zit nooit op dat pad. Die bouwt, verhuist en verzorgt alleen de sites.
Een bezoek aan een FolioPress-site maakt drie sprongen. Cloudflare vangt het op dicht bij de bezoeker en filtert de rommel eruit. Een voordeur – Traefik, dat ook voor de HTTPS-certificaten zorgt – kijkt naar het adres en vindt de juiste site. De site zelf antwoordt, ofwel vanuit een gedeeld gebouw, waar veel kleine sites naast elkaar wonen, ofwel vanuit een eigen huis als het er druk wordt. Aan de zijlijn regelt een verkeerstoren alles wat een bezoeker nooit ziet: aanmeldingen, facturatie, webadressen, updates en gezondheidschecks, met een kleine conciërge op elke server die de sites start en stopt.
Het is allemaal Python, in drie lagen die ik zelf heb geschreven: een webframework (pystarter, gebouwd op FastAPI), het contentmanagementsysteem daarbovenop (foliopress) en de verkeerstoren (Forestry). Betalingen lopen via Polar, dat optreedt als officiële verkoper (de zogeheten merchant of record), dus de Europese btw is hun hoofdpijn en niet de mijne.