La maggior parte dei siti web parla una sola lingua. Nel momento in cui un'attività ne ha bisogno di una seconda, le cose si complicano: un plugin di traduzione appiccicato sopra, una seconda copia del sito da tenere sincronizzata, oppure un piano più costoso solo per scrivere «Hello» accanto a «Ciao».
FolioPress è nato dall'idea opposta: una pagina non è una pagina con delle traduzioni attaccate, ma è tutte le sue lingue insieme. Il titolo, l'indirizzo, il menu, i tag, ciò che vede Google: tutto esiste in ogni lingua che scegli, fin dal primo minuto.
Tutto è iniziato dal desiderio di sostituire un CMS fatto su misura a cui erano state aggiunte più lingue a forza. Cercando alternative, ho scoperto che fallivano tutte miseramente nell'integrare contenuti multilingue in un costruttore di siti semplice da usare.
Questo è uno sguardo dietro le quinte: come si incastra il tutto, i compromessi dietro le scelte e le cose che si sono rotte lungo la strada.
Una visita viaggia da sinistra a destra. La torre di controllo non si trova mai su quel percorso. Si limita a costruire, traslocare e accudire i siti.
Una visita a un sito FolioPress fa tre tappe. Cloudflare la intercetta vicino al visitatore e filtra la spazzatura. Una porta d'ingresso (Traefik, che si occupa anche dei certificati HTTPS) guarda l'indirizzo e trova il sito giusto. A rispondere è il sito stesso, da un condominio, dove molti piccoli siti vivono fianco a fianco, oppure da una casa tutta sua quando ha molto traffico. In disparte, una torre di controllo gestisce tutto ciò che un visitatore non vede mai: iscrizioni, fatturazione, indirizzi web, aggiornamenti e controlli di salute, con un piccolo custode su ogni server che avvia e ferma i siti.
È tutto Python, in tre livelli scritti da me: un framework web (pystarter, basato su FastAPI), il sistema di gestione dei contenuti sopra di esso (foliopress) e la torre di controllo (Forestry). I pagamenti passano da Polar, che fa da venditore ufficiale (il cosiddetto merchant of record), quindi l'IVA europea è un grattacapo loro e non mio.