Cannabivo è l’indice internazionale e hub news per club sociali di Cannabis, coffeeshop e lounge: 13,573 club verificati in 10 paesi, in 18 lingue.
Cannabivo è l’indice informativo internazionale e hub news per i club sociali di Cannabis legali, i coffeeshop olandesi e le lounge per fumatori — un luogo in cui cercare, scoprire e connettersi attraverso informazioni trasparenti, aggiornate e multilingue. Quello che segue è la versione integrale di quella storia: da dove è nato Cannabivo, in cosa si è trasformato e come è costruito nel dettaglio.
La lacuna che abbiamo visto nel 2024
Come una "better directory for Germany and Spain" è diventata una production platform che attraversa dieci paesi, diciotto lingue e un quarto di milione di pagine — e l’ingegneria d’avanguardia che la sorregge.
Una directory può essere più di un elenco. Rendila legale, multilingue, verificata, privata e tecnicamente seria, e smette del tutto di essere un elenco. Diventa infrastruttura.
"Club sociali di Cannabis, coffeeshop e lounge per fumatori — un’unica directory internazionale e hub news." Questa è la nostra promessa in una sola riga, e l’abbiamo mantenuta semplice di proposito. Cannabivo non è una campagna di consumo, non è un marketplace per la Cannabis e non è un altro sito di schede esili cucito insieme con indirizzi copiati. È un indice informativo internazionale per club sociali di Cannabis legali, coffeeshop olandesi e lounge per fumatori — costruito perché le persone possano Cercare → Scoprire → Connettersi con informazioni trasparenti, aggiornate e disponibili nella propria lingua.
L’obiettivo va oltre la directory. Cannabivo sta diventando infrastruttura per la comunità CSC: privata per progettazione, internazionale per ambito, guidata dalla comunità e attiva in 18 lingue. La piattaforma serve già 225,792 pagine, 211,397 pagine di geolocalizzazione e 13,573 schede di club in 10 paesi. Sopra di esse si trovano un wiki approfondito sulla Cannabis, pagine di educazione e prevenzione, un sistema di notizie, aggiornamenti automatizzati dei club, un forum della comunità e un agente di supporto AI collegato a strumenti reali. Sotto corre un’architettura interamente interna, senza framework: standard web moderni, worker PHP persistenti, HTTP/3, l’analisi statica più rigorosa che siamo riusciti a configurare, analytics di prima parte e un unico contratto tipizzato PHP → TypeScript → Dart condiviso tra web e mobile.
Questa è la versione lunga di quella storia: da dove è nata Cannabivo, che cosa è oggi e — nel dettaglio — come è costruita.
La legalizzazione in Germania all’inizio del 2024 ha messo in luce qualcosa che era stato facile ignorare: la copertura online dei Cannabis Social Club non era minimamente pronta per la realtà che stava arrivando puntuale. A un web developer esperto, la maggior parte di ciò che esisteva appariva a metà — frammentata, incompleta, mal localizzata, tecnicamente datata e troppo povera per aiutare davvero qualcuno.
Le domande che le persone avevano non erano difficili. Dove si trovano i club legali? Quali dettagli sono aggiornati? Che cosa deve capire un nuovo arrivato prima di contattare un club? Che cosa è fattuale, che cosa è vecchio e che cosa è stato semplicemente copiato da altrove? Troppo spesso le risposte erano sparse tra schede deboli, frammenti tradotti automaticamente e pagine che chiaramente non erano mai state costruite per la comunità che dichiaravano di servire.
L’idea iniziale era modesta: una directory migliore per la Germania e la Spagna. Ma più guardavamo da vicino, più il quadro diventava chiaro. La comunità CSC non aveva bisogno dell’ennesimo elenco di locali. Aveva bisogno di uno strato informativo multilingue, attento al piano legale e tecnicamente affidabile — uno che potesse scalare paese per paese e restare comunque preciso al livello di una città, una regione, un singolo club, un articolo, una voce FAQ, una lingua.
Lo sviluppo completo in house è iniziato nella fine dell’estate/autunno 2024. Cannabivo è stato lanciato nel febbraio 2026, in tutte e 18 le lingue fin dal primo giorno, ed è stato migliorato quasi quotidianamente da allora. La sequenza è il punto: il supporto multilingue non è mai stato aggiunto dopo il lancio. È stato colato nelle fondamenta — il database, gli URL, il routing, il livello SEO — fin dal primo commit.
Quello che è partito come concetto di directory è cresciuto, accelerato dallo sviluppo assistito dall’AI, fino a diventare una piattaforma internazionale che copre Argentina, Colombia, Germania, Malta, Paesi Bassi, Sudafrica, Spagna, Svizzera, Thailandia e Uruguay. La copertura di ogni paese è ancora un lavoro in corso, e lo diciamo deliberatamente. Ma la scala produttiva è già reale, e l’obiettivo di medio termine non è in discussione: coprire ogni paese in cui la Cannabis è legalizzata o almeno depenalizzata, compresi i paesi dei programmi pilota come la Svizzera, che è già elencata.
Che cosa è Cannabivo oggi
Cannabivo è online in produzione e mantenuto attivamente. L’istantanea di produzione verificata il 2026-06-13 descrive una piattaforma che ha lasciato da tempo il territorio dei prototipi.

| Metrica di produzione | Conteggio attuale |
|---|---|
| Pagine totali | 225,792 |
| Pagine di geolocalizzazione | 211,397 |
| Schede dei club | 13,573 |
| Pagine dettagliate dedicate ai club | 13,573 |
| Articoli del wiki su Cannabis | 106 |
| Categorie del wiki | 9 |
| Voci FAQ | 82 |
| Categorie FAQ | 11 |
| Articoli editoriali pubblicati | 15 |
| Notizie automatizzate sugli aggiornamenti dei club | 275 |
| Utenti registrati | 1,216 |
| Thread del forum | 170 |
Nessuno di questi è un numero di facciata. Ognuno rimanda a una decisione di prodotto.
Una grande directory ha bisogno di pagine geolocalizzate perché le persone cercano localmente. Ha bisogno di pagine dettagliate perché ogni club merita contesto, non una sola riga in un elenco. Ha bisogno di URL multilingue perché gli utenti internazionali non devono mai essere trattati come un ripensamento. Ha bisogno di manutenzione costante perché le schede si degradano nel momento in cui nessuno se ne prende cura. Ha bisogno di pagine educative perché la qualità dell’informazione è l’intero punto. E ha bisogno di un forum perché la comunità CSC non è solo un problema di ricerca — è una conversazione.
Una directory internazionale verificata
La directory elenca attualmente 13,573 club in 10 paesi:

| Paese | Club |
|---|---|
| Thailandia | 9,489 |
| Spagna | 1,081 |
| Uruguay | 810 |
| Germania | 710 |
| Paesi Bassi | 673 |
| Argentina | 495 |
| Sudafrica | 243 |
| Colombia | 41 |
| Malta | 18 |
| Svizzera | 13 |
La Thailandia è oggi la quota più grande del database, e quella scala è un vantaggio reale. Spagna, Germania, Paesi Bassi, Uruguay, Argentina e gli altri arrivano ciascuno con un contesto legale diverso, aspettative locali diverse e diversi modelli di scoperta. Una directory internazionale seria deve tenere insieme tutta questa complessità senza trasformarla in rumore.
Cannabivo presenta le proprie schede come verificate, e la verifica è una promessa centrale della piattaforma — non un’etichetta che applichiamo con leggerezza. A questa scala, mantenere quella promessa è una questione di sistemi tanto quanto di disciplina editoriale. Manteniamo costantemente accurate e aggiornate le schede: nuove aperture, chiusure, indirizzi spostati, dettagli cambiati. L’obiettivo non è congelare una directory nel tempo, ma farla seguire il mondo reale mentre il mondo reale si muove. Una directory che invecchia il giorno stesso in cui viene pubblicata è peggiore di nessuna directory.
Attorno alle schede c’è una mappa interattiva con ricerca, una ricerca dedicata ai club e una pagina iniziale progettata per la freschezza — club aggiunti di recente, città popolari, hub per paese e un feed in tempo reale di notizie e aggiornamenti dei club.
Wiki, educazione e prevenzione — senza messaggi pubblicitari
Una semplice directory può dirti dove si trova qualcosa. Cannabivo è costruito per dirti che cosa significa.
Il wiki su Cannabis contiene 106 articoli in 9 categorie, con approfondimenti su botanica, storia, diritto e conoscenze legate al consumo. Non è un glossario gonfiato per sembrare sostanzioso; è stato ricercato e scritto per reggere da solo. Le pagine di educazione e prevenzione gli stanno accanto — fattuali, senza pubblicità e pensate per sostenere la comprensione, non per spingere un prodotto.
Questa distinzione non è cosmetica. Cannabivo è una directory informativa. Non facciamo affermazioni mediche e non incoraggiamo il consumo. Costruiamo accesso a informazioni strutturate, multilingue e legali, e manteniamo volutamente quel confine, perché la credibilità dell’intera piattaforma poggia su di esso. Sia il wiki sia le aree di educazione e uso sicuro continueranno a crescere — più articoli, più immagini, più video.
Notizie, aggiornamenti automatizzati e comunità
La sezione notizie è nuova e già molto attiva. Abbina articoli editoriali curati con notizie automatizzate sugli aggiornamenti dei club. Nell’istantanea di produzione attuale, Cannabivo conta 15 articoli editoriali pubblicati e 275 voci automatizzate di aggiornamento dei club.
La combinazione è intenzionale. Gli articoli editoriali forniscono il contesto più ampio — cambi di policy, sviluppi legali, momenti culturali. Le notizie automatizzate sugli aggiornamenti dei club esistono perché una directory non sta mai ferma: i club aprono, i dettagli vengono corretti, gli indirizzi cambiano. Un feed vivo permette alle persone di vedere quei cambiamenti invece di lasciare che un database silenzioso muti sotto di loro.
C’è anche un forum della comunità, e sta crescendo — finora 1,216 utenti registrati e 170 thread del forum. Il forum non è un’aggiunta posticcia. La cultura CSC è locale, legale, pratica e sociale allo stesso tempo. Una directory aiuta le persone a trovare informazioni; una comunità le aiuta a discuterle, confrontare note e imparare le une dalle altre. Entrambe appartengono sotto lo stesso tetto.
La chat di supporto AI ha strumenti reali
La chat di supporto di Cannabivo non è un chatbot decorativo appiccicato nell’angolo della pagina. È un agente di supporto AI addestrato su Cannabivo, sul web e nell’app, collegato a strumenti reali della piattaforma invece di essere lasciato a improvvisare.
In pratica, l’agente può:
1. Trovare una pagina specifica di Cannabivo e passare il link reale e canonico — nella lingua dell’utente, mai un URL inventato. 2. Cercare i club per nome, città, regione o vicinanza, incluso se un club è aperto adesso. 3. Rispondere dal knowledge base delle FAQ. 4. Aprire un vero ticket di supporto quando non può aiutare — con categoria, titolo e descrizione — così che un umano possa prenderlo in carico.
La differenza è il punto centrale: invece di indovinare, l’agente lavora dentro confini definiti della piattaforma e restituisce link e club che esistono davvero. Inoltre si affina da solo mentre le FAQ crescono, perché il sistema FAQ è mantenuto dinamicamente e migliora da sé — ogni lacuna che colmiamo diventa conoscenza da cui l’agente potrà attingere la volta successiva. Dietro le quinte la chat gira su un relay WebSocket con Redis pub/sub e risposte in streaming, e il modello è configurabile per singola distribuzione.
La filosofia è semplice: l’AI dovrebbe togliere attrito senza trasformarsi in una scatola nera. Se l’agente può rispondere in modo affidabile partendo dai dati di Cannabivo, lo dovrebbe fare. Se non può, dovrebbe passare la domanda a un vero processo di supporto — non inventare una risposta per riempire il silenzio.
Una piattaforma, diciotto lingue
Cannabivo è stato lanciato in tutte e 18 le lingue dal primo giorno. Non era la strada più facile. Era quella giusta.

La piattaforma è costruita come infrastruttura multilingue fin nelle fondamenta: URL localizzati, righe di pagina sincronizzate, `hreflang` e layout da destra a sinistra per l’arabo. Ogni lingua ha il proprio slug locale, e il supporto pieno alle 18 lingue attraversa database, routing, SEO e interfaccia.
Non si tratta di una traduzione con prefisso URL. Non incolliamo `/de/` davanti a un URL inglese e la chiamiamo localizzazione. Ogni lingua ha il proprio slug localizzato per ogni pagina. Per esempio:
- `/news/2`
- `/de/nachrichten/2`
Quella struttura arriva con supporto completo a `hreflang` e con un vero layout da destra a sinistra per l’arabo. Qui l’arabo non è «testo inglese reso in parole arabe» — ottiene un layout RTL che si adatta alla lingua, collegato allo stesso modo alla pagina, all’head SEO e all’interfaccia utente.
La piattaforma è prima di tutto in inglese, ma mai solo in inglese, né nello spirito né nella struttura. L’intera superficie linguistica copre inglese, tedesco, francese, spagnolo, italiano, polacco, arabo, ceco, hindi, ungherese, giapponese, coreano, portoghese, portoghese (Brasile), russo, turco e cinese — con l’arabo gestito da destra a sinistra.
Perché tutto questo conta così tanto? Perché la comunità CSC non è confinata a una sola lingua, un solo paese o un solo modello legale. Un utente in Germania, un proprietario di club in Spagna, un lettore che confronta gli approcci dei programmi pilota in Svizzera, un viaggiatore che controlla il contesto legale in Uruguay — nessuno di loro dovrebbe essere costretto in un’esperienza solo inglese per ottenere una risposta diretta.
Anche l’infrastruttura multilingue cambia ciò che un club può fare. Un proprietario può scrivere una descrizione una sola volta, rifinirla con l’assistente di scrittura AI se vuole, salvarla e tradurla in tutte e 18 le lingue con un solo clic. Non è solo comodità. È reperibilità internazionale che altrimenti sarebbe fuori portata per un piccolo club locale.
La traduzione non è una funzione parcheggiata ai margini di Cannabivo. Attraversa il database, gli URL, il livello SEO, l’interfaccia utente e il flusso di lavoro del proprietario del club.
Per i club: il gestore dei club è già disponibile
Cannabivo è costruito per la comunità, e quella comunità include le persone che gestiscono davvero i club. Il gestore dei club è già disponibile — un editor self-service completo dentro l’account membro, dove il proprietario gestisce la propria scheda senza bisogno di alcuna competenza tecnica.

È pensato prima di tutto per il mobile, perché la maggior parte dei proprietari non gestisce la propria presenza pubblica da una scrivania. Devono poter correggere un dettaglio in un minuto, dal telefono che hanno già in mano.
Il gestore dei club copre i dettagli pratici che rendono una scheda davvero utile:
- Descrizione e slogan, con un assistente di scrittura AI per redigere e rifinire
- Traduzione con un clic in tutte e 18 le lingue
- Logo, immagine hero e galleria riordinabile, con ritaglio delle immagini
- Orari di apertura
- Località e puntatore sulla mappa trascinabile
- Dati di contatto
- Circa 11 campi per i canali social
- Dettagli di adesione
- Selettore di 22 servizi
Ogni sezione si salva da sola — nessun JSON grezzo, nessun compito SEO, nessun calcolo dei rapporti d’immagine richiesto al proprietario. La proprietà è applicata lato server a ogni salvataggio, e la piattaforma non si fida mai di un identificatore fornito dal client, così un proprietario non può mai entrare nella scheda di un altro.
È qui che la directory di Cannabivo e la sua architettura multilingue incontrano la realtà quotidiana della gestione di un club. Una buona scheda non dovrebbe richiedere di assumere un’agenzia web. Non dovrebbe pretendere che il proprietario capisca SEO, rapporti delle immagini, pipeline di traduzione o dati strutturati. L’editor esiste per rendere la buona presentazione l’impostazione predefinita, non il premio per l’abilità tecnica.
I micrositi premium dei club sono nel backlog
Il livello successivo di questa visione sono i micrositi premium dei club — attualmente nel backlog e non ancora costruiti.
L’idea è semplice: ogni club premium rivendicato dovrebbe poter ottenere una homepage di prima parte rifinita sul proprio sottodominio Cannabivo.
{club}.cannabivo.com
Lo standard che vogliamo è «sbalorditivo per impostazione predefinita»: preset curati, SEO completo in 18 lingue e un sito collegato agli stessi dati della scheda, non a un sistema separato che il club debba tenere sincronizzato a mano. Aggiorna le informazioni una sola volta, e sia la directory sia il microsito riflettono la stessa fonte di verità.
Siamo intenzionalmente precisi nei tempi verbali qui. Il gestore dei club è già disponibile. I micrositi premium dei club sono una visione pianificata. Tenere netta questa linea fa parte del prodotto stesso, perché la credibilità lo è.
Sotto il cofano: perché Cannabivo è davvero all’avanguardia
Una piattaforma di queste dimensioni non diventa veloce, multilingue, privata e pronta per le app native per caso. Cannabivo è costruito da zero, internamente, su scelte ingegneristiche insolitamente rigorose per una directory pubblica.

Usiamo l’espressione «all’avanguardia» con attenzione. Non significa inseguire qualunque libreria sia di moda in questo trimestre. Significa adottare standard moderni dove risolvono un problema reale di prodotto, e poi applicare qualità con abbastanza rigore da permettere al sistema di continuare a scalare senza marcire in silenzio dall’interno.
Costruito da zero, senza un core di framework web
Cannabivo è una realizzazione completa in house, con nessun core di framework web. Non c’è una base applicativa Laravel o Symfony sotto; Symfony compare solo come un piccolo insieme di librerie discrete, usate dove se lo guadagna davvero il proprio posto.
Questa scelta ci consegna il controllo totale su routing, rendering, caching, localizzazione, contratti, policy di sicurezza e comportamento del runtime. Costa di più all’inizio. In cambio, la piattaforma si piega al prodotto invece di piegare il prodotto attorno ai default e al ciclo di vita di un framework.
L’architettura è un solo codebase, più prodotti — un core condiviso con livelli per progetto, noto internamente come modello Comune/Progetti. Questo conta perché Cannabivo non è un solo template di pagina stampato migliaia di volte. È allo stesso tempo una directory, un wiki, un sistema FAQ, un sistema di notizie, un sistema di supporto, un editor per i proprietari di club, una superficie comunitaria, una piattaforma di analytics, un motore di automazione e un backend per app native. Il core condiviso fa rispettare ovunque le regole comuni; i livelli per progetto trasportano il comportamento specifico del prodotto senza che nessuno debba copiare e incollare la piattaforma per ottenerlo.
Un runtime moderno: PHP persistente, HTTP/3 e compressione progettata per la velocità
Il backend gira su PHP 8.5.7 con FrankenPHP in worker mode, e questa è una vera scelta architetturale, non un default. Il PHP classico di solito significa un ciclo di vita per richiesta: avviare l’applicazione, gestire una richiesta, smontare tutto, rifarlo. Cannabivo invece mantiene caldi worker persistenti attraverso un socket Unix, così l’applicazione non paga una tassa di avvio a freddo a ogni singolo accesso.
Il database è MariaDB 12.3.2. La catena di strumenti frontend è TypeScript 7 compilato con il compilatore nativo Go (`tsgo`) e impacchettato con Vite 8; Node e TypeScript girano anche lato server per alcune parti del sistema.
Al livello del web server e dell’edge, Cannabivo usa nginx con HTTP/3 (QUIC), TLS 1.3 con 0-RTT, compressione dinamica zstd e asset statici brotli precompressi, con Cloudflare a fronteggiare i domini pubblici. Ogni pezzo è lì per svolgere un compito specifico:
- HTTP/3 su QUIC riduce l’attrito di trasporto sulle reti mobili moderne e soggette a perdite.
- TLS 1.3 con 0-RTT riduce il costo dell’handshake quando le condizioni lo consentono in sicurezza.
- zstd fornisce una compressione efficiente al volo per le risposte dinamiche.
- brotli (statico) comprime gli asset preconfezionati quanto più possibile.
- FrankenPHP in worker mode impedisce a PHP di comportarsi come uno script freddo a ogni richiesta.
Qui non c’è un singolo trucco magico. C’è una pila di piccole decisioni di latenza, e i loro effetti si sommano.
L’SPA istantanea: Navigation API, View Transitions e progressive enhancement
La domanda di prodotto è diretta: a chi piace fare clic su un link e aspettare?
Cannabivo si comporta come una moderna single-page app ogni volta che questo migliora l’esperienza, pur rimanendo prima di tutto renderizzato lato server. Usiamo la moderna Navigation API e la View Transitions API per far sì che i cambi di pagina risultino nativi — coerenti, animati, immediati — invece di un completo smontaggio del documento. Dove il browser lo supporta, muoversi dentro Cannabivo dà la sensazione di usare un’app.
Ma questa non è un’architettura tutto-o-niente basata su JavaScript. Cannabivo è costruito su un vero progressive enhancement. Spegni JavaScript, oppure aprilo in un browser senza le API moderne, e i semplici link renderizzati lato server continuano a funzionare. Questo conta per l’accessibilità, per la resilienza, per la SEO e per la semplice onestà tecnica. Il rendering inizia sul server; l’interazione aggiunge soltanto qualcosa a ciò che è già presente.
Per le pagine in cache, Cannabivo va ancora oltre: una cache di HTML statico prerenderizzato in quattro varianti di tema (auto, scuro, chiaro e una modalità nero assoluto), servita direttamente da nginx, bypassando completamente PHP. Un hit in cache non sveglia mai il livello applicativo — nginx restituisce l’HTML già renderizzato e lo marca come hit statico. Le quattro varianti esistono perché la presentazione non ha una forma universale; prerenderizzarle tutte mantiene la pagina veloce senza appiattire il design system in un unico compromesso. Vengono scritte una sola volta al momento del rendering e compresse fuori banda da un demone che sorveglia il filesystem, così il percorso delle richieste non ne paga mai il costo.
Il livello di performance frontend include anche:
- Critical CSS inline e fissato con hash nella Content Security Policy
- Immagini AVIF con dimensioni esplicite per azzerare il layout shift
- Caricamento eager e ad alta priorità per l’hero nella parte visibile iniziale; caricamento lazy e a bassa priorità per il resto
- Prefetch su hover e touch delle prossime navigazioni più probabili
- Early Hints come parte della strategia di caricamento
Nel percorso comune, gli Early Hints sono mediati da Cloudflare — è il modo onesto di descrivere come la maggior parte dei visitatori li incontra davvero — e un vero HTTP 103 viene emesso sul percorso dinamico di cache miss. Non sosteniamo che ogni visitatore riceva letteralmente un 103 su ogni percorso di rete. Sosteniamo però che il sistema è progettato attorno al moderno modello degli hint, fino al preload dell’immagine LCP per pagina iniettato all’edge.
Il punto da tenere fermo: qui la performance non è delegata a una dashboard sulla dimensione del bundle. È costruita dentro rendering, caching, trasporto, immagini, CSS, prefetch e progressive enhancement — ogni livello che tira nella stessa direzione.
Gli URL multilingue sono infrastruttura, non decorazione
La localizzazione di Cannabivo non è solo traduzione dei contenuti. È fatta di slug localizzati, righe di pagina sincronizzate, `hreflang` e layout RTL, trattati come una dimensione di prima classe della piattaforma invece che come un ritocco finale.
A 225,792 pagine × 18 lingue, ogni debolezza smette di essere cosmetica e diventa strutturale. Una riga di traduzione mancante non è un piccolo refuso — può rompere SEO, navigazione, link interni o la fiducia dell’utente nell’intero sito. Ecco perché la tabella base `pages` e le 17 tabelle per lingua sono mantenute in perfetta sincronia verificata, e perché le pagine dei club, le pagine geografiche, gli articoli del wiki, le voci FAQ e le notizie vivono tutte dentro la stessa struttura internazionale invece di una tabella di traduzione aggiunta di lato.
Qualità del codice: PHPStan al massimo, TypeScript ultra-rigido e regole che fanno rispettare le politiche
Cannabivo esegue PHPStan al livello 10 — il massimo — insieme a 121 regole personalizzate di analisi statica. Sul frontend, TypeScript gira in modalità ultra-rigida con 14 regole lint personalizzate e nove plugin a livello di errore.
Non si tratta di purezza estetica. Si tratta di rendere impossibile spedire intere classi di errori fin dall’inizio.
Le regole personalizzate sono policy codificate come codice. Alcuni esempi reali:
- `RequireRateLimitOnEveryRouteRule` — una rotta API senza un limite di rate dichiarato fallisce la compilazione. La postura di sicurezza non dipende dal fatto che qualcuno si ricordi una checklist in revisione.
- `NoRawIdInResponseDtoRule` — le risposte esterne devono usare UUID, mai gli ID numerici grezzi del database, così gli identificatori interni non trapelano ai client.
- `NoInlineStylesRule` — gli stili inline vengono rifiutati in fase di compilazione, mantenendo applicabile la Content Security Policy rigida.
- Disciplina dei DTO — i gestori devono accettare un DTO di richiesta tipizzato e restituire un DTO di risposta tipizzato; gli array nudi vengono rifiutati, ed è ciò che rende possibile la catena tipizzata cross-platform qui sotto.
La stessa filosofia attraversa tutto il codebase: i contratti generati non possono essere modificati a mano, le forme di backend e frontend non possono divergere in silenzio, e le assunzioni sensibili per la sicurezza vengono verificate in modo meccanico ovunque una macchina possa verificarle. L’analisi statica non è un lavoro glamour, ma è una parte enorme del motivo per cui una piattaforma in movimento può restare credibile. Rilasciamo quasi ogni giorno; l’analisi rigorosa è ciò che ci consente di muoverci in fretta senza fingere che «muoversi in fretta» debba significare «accettare il caos».
Un unico contratto tipizzato: 1,518 DTO PHP → 1,518 tipi TypeScript → 1,518 tipi Dart
Una delle decisioni ingegneristiche più forti di Cannabivo è il contratto API tipizzato.
Le forme dei dati backend vengono definite una sola volta come DTO PHP e auto-generate sia in TypeScript sia in Dart. La mappatura è uno-a-uno:
1,518 DTO PHP ↔ 1,518 tipi TypeScript ↔ 1,518 tipi Dart
Website e app native consumano lo stesso contratto generato del backend. Quando una forma backend cambia, i consumer TypeScript e Dart non possono scivolare in una realtà parallela — i file generati sono bloccati in sola lettura, così nessun umano può modificarli a mano, e qualsiasi divergenza tra i DTO sorgente e i tipi generati diventa un errore che blocca la compilazione, non una sorpresa a runtime scoperta da un utente.
Questo conta perché Cannabivo è più di un sito web. Le app native vengono costruite in parallelo, e condividere le forme API tra web e mobile evita un classico modo di fallire: il backend evolve, il team web corregge una sua interpretazione, l’app mobile ne mantiene un’altra e i bug si accumulano silenziosamente nelle giunture. Abbiamo scelto il modello più rigoroso di proposito — definire una sola volta la fonte di verità, generare da essa i contratti della piattaforma e trasformare la divergenza in un problema da compilazione invece che in un problema visibile all’utente.
Analisi di prima parte orientate alla privacy: niente Google Analytics, niente tracker di terze parti
Cannabivo non usa Google Analytics né tracker di terze parti. Al loro posto abbiamo costruito un sistema di analisi di prima parte completamente personalizzato — inclusi i Core Web Vitals reali degli utenti — supportato da una propria pipeline di ingestione e da decine di tabelle costruite ad hoc per eventi grezzi, aggregazioni orarie e giornaliere e viste umane filtrate dai bot. I dati dei visitatori non lasciano Cannabivo per andare ai giganti tecnologici.
È una scelta di privacy e insieme una scelta di prodotto. Abbiamo comunque bisogno di sapere se le pagine sono davvero veloci sul campo, non solo su un banco di test. Abbiamo semplicemente deciso di misurarlo noi stessi invece di alimentare il comportamento dei visitatori con la macchina di sorveglianza di qualcun altro. Una directory per informazioni CSC legali dovrebbe prendere la privacy sul serio, e nessuno dovrebbe dover barattare il proprio contesto di navigazione per la funzionalità di base.
Sicurezza di livello bancario, misurata e applicata
Cannabivo esegue un’architettura di sicurezza multilivello di livello bancario:
- Content Security Policy senza script o stili inline, a meno che non siano singolarmente autorizzati con hash
- Trusted Types per neutralizzare intere categorie di DOM injection
- Rate limiting multilivello, per IP e per utente — con la regola di compilazione per cui ogni rotta priva di limite non si compila
- Firma HMAC delle richieste sugli endpoint interni sensibili
- Protezione CSRF sulle richieste autenticate che cambiano stato
- HSTS preload
- Test di sicurezza assistiti dall’AI
La piattaforma ottiene A+ nel Mozilla Observatory — 135 su 100 punti. È un risultato confermato, e una fascia che pochissimi siti raggiungono.
La Content Security Policy merita uno sguardo più ravvicinato. Molti siti pubblicizzano una CSP pur continuando a consentire un ampio execution inline sotto di essa. La postura di Cannabivo è più stretta: script e stili inline non sono affatto ammessi in modo generale — ognuno deve essere autorizzato con hash — e insieme a Trusted Types questo rende molto più difficili da realizzare intere categorie di injection lato browser. Anche il rate limiting riceve lo stesso trattamento: non middleware opzionale, ma architettura che la compilazione rifiuta di spedire senza. L’idea ricorrente è la stessa in tutto il sistema — codificare l’assunzione di sicurezza dentro il sistema stesso, così non può essere dimenticata in silenzio.
Messaggistica diretta crittografata end-to-end
Cannabivo include messaggistica diretta crittografata end-to-end con un design server a conoscenza zero: il server memorizza solo chiavi pubbliche e ciphertext opaco, mai il contenuto di un messaggio.
La crittografia è di livello Signal, multi-dispositivo e costruita su libsodium. Il set di primitive verificato include:
- X25519 per lo scambio di chiavi
- XChaCha20-Poly1305 per la crittografia autenticata
- Ed25519 per le firme
- BLAKE2b per la derivazione delle chiavi
- backup mnemonico delle chiavi BIP-39
- uno schema Sender Key per le conversazioni di gruppo
La parte interessante è il modello multi-dispositivo. Un messaggio viene cifrato una sola volta con una chiave di contenuto per messaggio; quella chiave viene poi incapsulata separatamente per ciascun dispositivo del destinatario tramite uno scambio di chiavi effimero e distribuita in fan-out — così lo stesso messaggio può raggiungere un telefono, un tablet e il web senza che il server tocchi mai il plaintext. L’implementazione è condivisa tra le piattaforme: sul web, tutta la crittografia, l’archiviazione delle chiavi e il lavoro sui socket girano fuori dal thread principale in un Web Worker con le chiavi conservate in IndexedDB; nelle app native, le stesse primitive girano tramite un binding FFI sodium con le chiavi nell’archiviazione sicura del dispositivo.
Siamo attenti alla terminologia. Questa è crittografia E2E multi-dispositivo di livello Signal, basata su libsodium. Non la chiamiamo «Signal Protocol», e non rivendichiamo il Double Ratchet o la forward secrecy per messaggio. La forza resta comunque sostanziale: il server non può leggere i messaggi, e il modello crittografico è identico su ogni client. Per una piattaforma comunitaria CSC, la comunicazione privata non è una funzione decorativa — se la messaggistica esiste, deve essere progettata con un confine serio di privacy fin dalla prima riga di codice.
App native: Flutter, offline-first, disciplina ad alta frequenza di aggiornamento
Le app native sono costruite con Flutter — tre app che condividono un unico core — sopra un database locale offline-first e lo stesso contratto tipizzato generato del sito. La gestione dello stato e l’archiviazione locale sono progettate per un’esperienza reattiva e capace di funzionare offline, non per un sottile involucro drappeggiato su una web view.
La disciplina delle prestazioni è rigorosa e applicata da regole lint personalizzate: il comportamento a frequenza di aggiornamento elevata, 120fps, è l’obiettivo, con lint che vietano i pattern noti per causare scatti — decodifiche di immagini senza limiti, costosi effetti blur, rendering delle liste senza builder — così le regole intercettano una regressione prima che un essere umano possa notarla. Questo conta perché le prestazioni mobile non sono solo il tempo medio di caricamento. Sono la risposta al tocco, la stabilità delle animazioni, la scorrevolezza delle liste e il fatto che l’app sembri affidabile sul dispositivo che una persona porta davvero con sé tutto il giorno.
La visione dell’app è pratica: il miglior club vicino a te, presto a portata di tocco, sempre in tasca. L’app Android arriva per prima, seguita da iOS.
Automazione: contenuti, traduzione, aggiornamenti, media e sitemap
Cannabivo include un motore di contenuti autonomo che è attivabile dall’operatore. Questa parola fa davvero il suo lavoro: non stiamo dicendo che un bot pubblichi senza controllo, 24 ore su 24. È un sistema che un operatore può accendere e spegnere.
Quando è attivo, il motore può fare ricerca su notizie sulla Cannabis da più fonti, deduplicare rispetto alla propria memoria degli articoli così che lo stesso evento non venga coperto due volte, generare un articolo strutturato, tradurlo in tutte le altre 17 lingue prima della pubblicazione — in modo atomico, così un articolo tradotto a metà non va mai online — e distribuirlo su 16 canali social e di diffusione: Telegram, X, Bluesky, Mastodon, LinkedIn, Reddit, Discord, Matrix, Facebook, Instagram, Threads, WhatsApp, Web Push, la newsletter, webhook generici e un canale di automazione del browser. Il rollout annunciato pubblicamente parte da Telegram, Instagram e X, con altri canali in arrivo.
Il livello di automazione gestisce anche la meccanica meno glamour che tiene in vita una grande directory multilingue:
- Notizie automatizzate sugli aggiornamenti dei club
- Worker di ottimizzazione di immagini e video (catene responsive AVIF/WebP/JPEG; video adattivo)
- Rigenerazione notturna delle sitemap multilingue
- Una flotta di worker pianificati guidati da timer systemd, non da fragili job cron
È così che una piattaforma con centinaia di migliaia di pagine resta aggiornata. I contenuti hanno bisogno di struttura. Le traduzioni hanno bisogno di sequenza. Le sitemap devono riflettere una realtà multilingue, non una realtà inglese. Gli aggiornamenti dei club devono emergere senza che un editor approvi ogni piccolo cambiamento. Qui l’automazione non sostituisce il giudizio — elimina l’attrito ripetitivo, così le persone possono restare sulle parti che hanno davvero bisogno di loro.
Dove siamo ora
La piattaforma web di Cannabivo è in produzione e mantenuta attivamente. La fase corrente corre su due binari in parallelo.
Il primo è stabilizzazione, rifinitura e verifica: aggiornare i contenuti dei club esistenti, correggere i dettagli e stringere progressivamente la piattaforma. Una directory con 13,573 schede di club e 211,397 pagine geografiche che manteniamo continuamente accurate e aggiornate non può essere trattata come «finita». Le informazioni cambiano, i dettagli locali cambiano, e la piattaforma deve tenere il passo.
Il secondo è lo sviluppo mobile nativo in parallelo — lo stesso core Flutter, offline-first, lo stesso contratto tipizzato, la stessa disciplina sulle prestazioni. L’obiettivo è semplice e ambizioso allo stesso tempo: il miglior club vicino a te, presto a portata di tocco, sempre in tasca.
Accanto a entrambi, stiamo distribuendo informazioni automatizzate sui club attraverso i canali social e il notiziario di Cannabivo. La pagina iniziale mostra già la natura viva della piattaforma — club aggiunti di recente, città popolari, hub per paese e i feed di notizie e aggiornamenti dei club.
Tutti e 10 i paesi restano un lavoro in corso. Non è una debolezza da cui scusarsi; è una gestione onesta dell’ambito. La copertura internazionale non è una spilla da appuntare su un database statico. È un impegno operativo, e va rinnovato ogni singolo giorno.
Cosa viene dopo
La roadmap di Cannabivo è articolata per fasi, e teniamo una linea netta tra ciò che è stato rilasciato, ciò che è pianificato e ciò che è ancora in discussione.

| Tempistica | Tabella di marcia |
|---|---|
| 1–2 mesi | Lancio dell’app Android nel Play Store; altri canali social tra cui Telegram, Instagram, X e molti altri |
| 2–3 mesi | Lancio dell’app iOS nell’App Store |
| 3–12 mesi e oltre | Gestione di club e membri per ogni club; un marketplace per attrezzature, spazi di coltivazione e bisogni correlati |
| Nel backlog | Micrositi premium dei club su `{club}.cannabivo.com`, con preset curati e SEO in 18 lingue |
| In discussione | Cannabivo-ID per un check-in rapido nei club tramite l’app |
| In discussione | Modello di monetizzazione |
Android prima, poi iOS
L’app Android è prevista nel Play Store entro 1–2 mesi, con l’app iOS che seguirà nell’App Store entro 2–3 mesi. Entrambe fanno parte della stessa strategia tecnica: app Flutter che condividono un unico core, un database locale offline-first, disciplina delle prestazioni ad alta frequenza di aggiornamento e lo stesso contratto tipizzato generato del sito. Poiché condividono quel contratto, le app ereditano la correttezza del backend invece di reimplementarla — e reimplementare è esattamente il luogo in cui nasce la maggior parte dei bug cross-platform.
Gestione di club e membri
Nel corso della finestra 3–12 mesi e oltre, Cannabivo punta a offrire la gestione di club e membri per ogni club — estendendo il gestore dei club già rilasciato dall’editing delle schede pubbliche a strumenti operativi più profondi. L’intento è incontrare le realtà amministrative che i club affrontano già oggi, senza costringere ciascun club a reinventarsi il proprio software da zero.
Visione del marketplace
Anche un marketplace si colloca nella finestra 3–12 mesi, rivolto ad attrezzature, spazi di coltivazione e ai bisogni correlati attorno alle operazioni CSC. Per essere precisi su che cosa è e che cosa non è: non si tratta di una rivendicazione di vendita di Cannabis, né di un invito al consumo. È una direzione di piattaforma focalizzata sull’infrastruttura e sulle forniture da cui l’ecosistema dipende per funzionare.
Cannabivo-ID è sotto valutazione attiva
Cannabivo-ID è in discussione: un’identità digitale che potrebbe consentire ai membri di fare rapidamente il check-in nei club tramite l’app — meno burocrazia per i club, un arrivo più fluido per i membri. La consideriamo fattibile sia tecnicamente sia legalmente, e si trova sotto valutazione attiva. Non è stata rilasciata, e manterremo chiara questa distinzione.
La monetizzazione è ancora aperta
La monetizzazione resta una questione aperta. Tra le possibilità sul tavolo ci sono limitare le visualizzazioni gratuite dei club, abbonamenti premium, pubblicità, collaborazioni con negozi di vape o di attrezzature per CSC e l’uso di Cannabivo da parte dei club per gestire i propri membri. Non stiamo ancora presentando un modello finale. Qualunque soluzione adotteremo dovrà restare fedele al ruolo della piattaforma: una directory informativa internazionale che sia trasparente, legale, multilingue e davvero utile alla comunità CSC.
Lo scopo di Cannabivo è diventare l’infrastruttura internazionale che la comunità CSC non ha mai avuto — trasparente, legale, multilingue e costruita per durare. La directory è la porta d’ingresso. Tutto il resto è l’edificio dietro di essa: il wiki, le pagine di educazione e prevenzione, il sistema di notizie, le FAQ, il forum, il gestore dei club, l’agente di supporto AI, le app native, la messaggistica criptata, il motore di automazione, i contratti tipizzati, gli analytics di prima parte e l’architettura di sicurezza. Nulla di tutto ciò sta in piedi da solo; tutto esiste per rendere le informazioni legali sulla Cannabis più facili da trovare e più difficili da sbagliare. Siamo partiti da una lacuna evidente in Germania e Spagna. Ora stiamo costruendo in dieci paesi, in diciotto lingue, su scala produttiva, su fondamenta ingegneristiche pensate per continuare a crescere. Qui nulla è finito — e preferiamo dirlo con chiarezza piuttosto che fingere che una directory sia mai davvero conclusa. L’ambizione è la parte più semplice da dichiarare: il miglior portale del suo genere al mondo. Sfida accettata. Restate sintonizzati.







