tripbier est né pour résoudre un problème simple.
Découvrir une brasserie artisanale passe encore par des dizaines de recherches isolées, des avis dispersés et des informations obsolètes.
Notre mission est d'organiser le savoir brassicole mondial sur une seule plateforme ouverte, consultable et assistée par intelligence artificielle.
Nous ne voulons pas seulement lister des brasseries.
Nous voulons relier des personnes, des territoires, des histoires, des styles, des distinctions et des expériences.
De la première bière à Gramado à une brasserie primée à Portland, le voyage doit être continu.
Tripbier est une plateforme mondiale de découverte de brasseries artisanales, d'itinéraires brassicoles, de tourisme brassicole et d'intelligence géographique, utilisant l'intelligence artificielle pour relier voyageurs, brasseries et destinations dans 16 pays.
manuel
du système
Guide complet de tripbier — plateforme d'itinéraires brassicoles construite sur Cloudflare Workers, D1, KV et R2. Chaque section contient des liens directs vers la fonctionnalité décrite.
qu'est-ce que tripbier
vue d'ensembletripbier est une plateforme serverless de découverte et d'itinéraires de brasseries artisanales. Elle combine une base de données géoréférencée avec une IA générative pour créer des expériences personnalisées — de la carte interactive à l'itinéraire narré par un concierge brassicole.
Toute l'infrastructure tourne sur Cloudflare (Workers + D1 + KV + R2), sans serveurs propres, avec une latence mondiale de périphérie et un coût variable à l'usage. Le modèle de données est SQLite via D1, réparti sur plusieurs bases par continent.
Le système est composé de 6 workers indépendants, chacun ayant une responsabilité spécifique, communiquant via fetch interne ou partageant l'état par le KV.
chiffres du système
métriques · juin 2026| métrique | valeur | observation |
|---|---|---|
| Brasseries cartographiées (total) | 19.905 | Brésil + 15 pays internationaux · tripbeer-map |
| Brasseries BR (tripbeer-db) | 5.448 | actives et opérationnelles |
| Brasseries US (OpenBreweryDB) | 8.353 | importées via pipeline |
| Pays couverts | 16 | BR, US, DE, BE, CZ, AT, UK, IE, FR, ES, IT, PT, NL, NO, SE, AR |
| Villes avec pages éditoriales | 130+ | 63 internationales + 67+ BR |
| Landing pages de brasseries | primées | CBC, WBC, WBA — générées dynamiquement |
| Visiteurs / jour | 625 | métrique juin/2026, croissance organique |
| Requêtes / mois | ~40k | US + NL + BR comme principales origines |
| Langues supportées | 15 | pt-BR, en, es, de, fr, it, nl, no, sv, ja et plus |
| Tables dans le D1 principal | 40+ | tripbeer-db (main) + tripbeer-map (geo) |
| Position moyenne Google | 6.9 | « best craft beers near me » — 131 impressions/jour |
infrastructure
cloudflare stack| worker | domaine | responsabilité |
|---|---|---|
utt-engine | tripbier.com/* · *.tripbier.com/* | routeur principal — sert les pages du KV, API publique, sous-domaines, bannière LGPD |
utt-agentlink | /api/chat (interne) | pipeline Maestro — 6 mini-agents pour la génération d'itinéraires via GPT-4o-mini |
utt-brewhub | brewhub.html | chat widget par brasserie, agent IA spécialisé par slug, protection /api/palpite |
utt-analytics | /api/collect (interne) | RUM 1st-party — collecte dwell time, récurrence, funnel ; cron d'agrégation quotidienne |
utt-beerfeed | /api/news | radar d'actualités brassicoles par ville — cron le lundi |
utt-static | assets statiques | sert CSS, JS, images via binding ASSETS |
| base | id | contenu principal |
|---|---|---|
tripbeer-db | principal | brasseries BR, utilisateurs, itinéraires, passeports, distinctions, styles, horaires, social, analytics |
tripbeer-map | geo | brasseries mondiales avec lat/lon/slug pour la recherche de la carte |
DB_AMERICAS | continent | US, CA, AR, CL, MX — fallback de la carte |
DB_EUROPE | continent | DE, BE, CZ, FR, ES, IT, PT, UK, NL, NO, SE… |
utt-analytics | id: 170900e5 | événements RUM, sessions, dwell, funnel de parcours |
| namespace | id | usage |
|---|---|---|
UTT_CACHE | 4b5519d0… | pages HTML (page:{nom}.html), sessions (sess:{id}), index géo (idx:{ville}:{pays}), stats |
Format des clés KV : page:home.html · page:agm.html · page:copa.html · idx:porto+alegre:br:uuid · sess:abc123 · stats:total_cervejarias
Bucket : tripbeer-assets · CDN public : pub-b8f8998895a64e77a4fa43f286aa08dd.r2.dev/
Stocke les logos de brasseries, images hero (AVIF/WebP/PNG), og:images pour WhatsApp (JPEG 1200×630 <300KB) et les assets de campagnes partenaires.
pages principales
pages du siteradar / carte interactive
fonctionnalitéLe radar (tripbier.com/mapa.html) est le cœur de la plateforme — une carte Leaflet avec 19 900+ épingles de brasseries dans 16 pays, avec MarkerCluster pour les performances et des filtres en temps réel.
À l'ouverture, la carte utilise la géolocalisation du navigateur ou l'IP (Cloudflare cf.city) pour se centrer automatiquement. Chaque épingle ouvre une fiche avec note, adresse, lien vers Instagram/site et bouton « voir l'itinéraire sur Google Maps ». Les brasseries primées reçoivent un marqueur différencié.
Paramètres d'URL acceptés par la carte :
| paramètre | exemple | effet |
|---|---|---|
?lat=&lng=&zoom= | ?lat=-30.03&lng=-51.21&zoom=11 | centre sur des coordonnées spécifiques (utilisé par les sous-domaines comme AGM) |
?cidade=&uf= | ?cidade=Gramado&uf=RS | recherche et centre sur la ville indiquée |
?roteiro= | ?roteiro=variedade-curitiba-3d | charge et met en évidence les brasseries d'un itinéraire sauvegardé |
?proximas=1 | ?proximas=1 | force la recherche des plus proches de l'utilisateur |
concierge IA
pipeline maestroLe concierge tripbier est un pipeline de 6 mini-agents qui transforme un message texte en itinéraire brassicole personnalisé. Chaque agent reçoit une enveloppe de données, l'enrichit et la passe au suivant.
Le concierge est multifonction par conception — ce n'est pas un chatbot avec menu d'options. L'utilisateur écrit en langage naturel et le système détecte l'intention automatiquement, sans demander de choix de mode :
| l'utilisateur dit | intention détectée | ce qui se passe |
|---|---|---|
| « Y a-t-il des IPA à Gramado ? » | recherche | liste les brasseries avec IPA à la carte, avec lien direct |
| « Explique-moi ce qu'est une Weizen » | conversation | le sommelier répond sur le style, l'histoire et les accords |
| « Je veux passer 3 jours à Curitiba » | générer itinéraire | pipeline complet : météo → curateur → récit personnalisé |
| « Où se trouve Dado Bier ? » | naviguer | ouvre la carte avec l'épingle de la brasserie |
| « poa, wkd, craft » | générer itinéraire | normalise le sigle → extrait l'intention → génère un itinéraire de week-end à POA |
Le Validateur détecte les 4 modes sans aucun appel LLM — logique pure en JavaScript. Il normalise les sigles (poa → Porto Alegre, cwb → Curitiba) avant l'Extracteur. Le Curateur consulte les bases en cascade : DB Brasil → DB_AMERICAS → DB_EUROPE → DB_ASIA → Serper Discovery comme fallback final.
passeport brassicole
gamification · pwaLe passeport tripbier est une PWA (Progressive Web App) installable qui permet à l'utilisateur de collectionner des tampons à chaque visite dans des brasseries partenaires. C'est le moteur de gamification et de fidélisation de la plateforme.
Parcours utilisateur : L'utilisateur accède à passaporte.tripbier.com, installe l'app sur son téléphone (écran d'accueil), s'identifie par nom et WhatsApp (sans inscription), et reçoit des tampons lors du check-in dans les brasseries du circuit.
Circuits disponibles : Chaque itinéraire partenaire dispose d'un circuit avec N étapes. Compléter toutes les étapes débloque un avantage dans la brasserie partenaire (cadeau, réduction, expérience exclusive). L'espace partenaire (admin-parceiro) affiche en temps réel qui a complété le circuit et permet d'envoyer la récompense par WhatsApp.
Niveaux : Curieux → Apprenti → Explorateur → Maître → Sommelier — basés sur le nombre total de tampons accumulés.
itinéraires
génération et partageLes itinéraires sont générés par le pipeline Maestro et sauvegardés automatiquement dans le D1 avec une URL permanente et unique — sans connexion. L'URL peut être partagée par WhatsApp, incluse dans un e-mail ou mise en favoris.
Format de l'URL : tripbier.com/roteiros.html?id={slug} — où le slug est généré par le Curateur à partir de la ville, du profil et du hash de la sélection (ex : variedade-porto-alegre-3d-a1b2).
Chaque itinéraire stocke : liste de brasseries (id, nom, note du curateur), ville, profil choisi, nombre de jours, météo au moment de la génération et le récit du Présentateur.
16 pays
couverture mondialetripbier dispose d'une couverture active dans 16 pays, avec base de données, villes éditoriales et routage par le concierge. Chaque pays dispose de pages de villes et d'une intégration avec la carte mondiale.
Les pages de pays sont dynamiques — elles n'existent pas comme fichiers statiques. Elles sont générées en temps réel par le worker à partir des données du D1 : brasseries, villes, distinctions et contenu éditorial. Cela signifie qu'ajouter un nouveau pays à la base de données crée automatiquement toutes ses pages, sans aucun travail manuel de publication. C'est une infrastructure à l'échelle déguisée en contenu.
pages de villes
éditorial géographiqueChaque ville avec une masse critique de brasseries reçoit une page éditoriale curée — non générée automatiquement, mais rédigée avec une identité locale. Le template de base est le caxias.html (standard sériffé avec sidebar, hero, pull-quote et grille de cards).
Structure de la page : hero avec photo locale → éditorial « pourquoi visiter » → pull-quote → grille de brasseries avec note/insta/site/agent → événements → itinéraire suggéré. La section actualités est alimentée par utt-beerfeed en temps réel.
Toutes les pages de villes internationales se trouvent dans le sous-répertoire du pays : /de/berlim.html, /be/bruges.html, /it/roma.html, etc. Comme les pages de pays, les pages de villes sont générées dynamiquement — le worker construit le HTML à partir du D1 à chaque requête, sans fichiers pré-compilés. Une nouvelle ville avec suffisamment de brasseries dans la base dispose déjà de sa page.
| page phare | lien |
|---|---|
| Caxias do Sul (RS) — template de référence | tripbier.com/caxias.html |
| Blumenau (SC) — capitale catarinense | tripbier.com/blumenau.html |
| Porto Alegre (RS) — pôle AGM | tripbier.com/porto-alegre.html |
| Gramado (RS) — tourisme + craft | tripbier.com/gramado.html |
| Bruges (Belgique) — référence mondiale | tripbier.com/be/bruges.html |
| Berlin (Allemagne) | tripbier.com/de/berlin.html |
| Prague (République Tchèque) | tripbier.com/cz/praga.html |
landing pages de brasseries
virtual landingLes brasseries primées (CBC, WBC ou WBA) reçoivent automatiquement une landing page dynamique générée à partir des données du D1 — sans intervention manuelle. L'accès se fait via sous-domaine : slug.tripbier.com.
Contenu affiché : nom, ville/état, note et votes Google, horaires d'ouverture par jour de la semaine, bières en production (nom, style, ABV, IBU), distinctions avec médaille et année, articles de blog associés, carte intégrée, boutons vers Instagram/site/WhatsApp et chat avec agent IA spécialisé dans la brasserie.
Règle d'accès : Si la brasserie a une distinction → affiche la landing page complète. Si elle n'a pas de distinction mais a Instagram ou site → redirige (302) vers le réseau social. Si elle n'a rien → 404.
Cache : chaque landing page est stockée dans le cache de périphérie Cloudflare pendant 1 heure (stale-while-revalidate=86400) — zéro CPU lors des visites récurrentes.
concours et récompenses
palmarèstripbier indexe les médailles des principaux concours de bière artisanale et les affiche sur les landing pages de brasseries et la page des récompenses. Les médailles sont un critère de classement dans le Curateur.
| concours | sigle | portée | médailles |
|---|---|---|---|
| Campeonato Brasileiro de Cerveja | CBC | National — Blumenau/SC | Gran Champion, Or, Argent, Bronze |
| World Beer Cup | WBC | International — USA | Gold, Silver, Bronze |
| World Beer Awards | WBA | International — UK | Country Winner, Gold, Silver |
| Concurso Gaúcho de Cerveja (AGM) | CGCBA | RS — organisé par l'AGM | Or, Argent, Bronze |
| Mondial de la Bière | MDB | Brésil + International | Médaille d'Or, d'Argent, de Bronze |
espace partenaire
admin · brasseriesL'espace partenaire est l'interface de gestion pour les propriétaires de brasseries. Accès via le slug de la brasserie (sans connexion — auth par token via URL, à implémenter). URL directe : tripbier.com/admin-parceiro?slug={slug}.
| onglet | ce qui est géré | table D1 |
|---|---|---|
| 🗺️ itinéraires | Participants aux circuits du passeport : progression, check-ins, bouton « récompenser » via WhatsApp | passaporte_carimbos · passaportes |
| 🍺 bières | Catalogue de bières : nom, style, ABV, IBU, description, photo (URL) | estilos_cervejaria |
| 📋 carte | Articles de la carte : catégorie, nom, prix, description, photo — visible sur la landing page | lp_cardapio |
| 🎯 promos | Campagnes : titre, type, remise %, validité, toggle actif/inactif | lp_campanhas |
| 🕐 horaires | Grille hebdomadaire Lundi→Dimanche : ouvre, ferme, fermé, observation | horarios |
agm — associação gaúcha de microcervejarias
sous-domaine · partenariatLe agm.tripbier.com est un sous-domaine dédié au partenariat tripbier × AGM — une pitch page éditoriale avec les 19 brasseries associées cartographiées, l'histoire du mouvement craft gaúcho et un CTA pour l'adhésion.
Contenu historique basé sur une recherche académique vérifiée : Cruz, R.C. (2016). Consumo e Formação de Mercado: um estudo sobre as microcervejarias de Porto Alegre. Dissertação UNISINOS.
Chronologie : Dado Bier (1995, première microbrasserie BR) → WE Consultoria (1997) → Acerva Gaúcha (2003) → AGM fondée par Jorge Gitzler → réduction ICMS au RS → Pôle Anchieta (2010) → 50+ adhérents aujourd'hui.
claim your brewery
acquisition b2bLes brasseries sans profil complet affichent un CTA « C'est votre brasserie ? » sur la landing page et dans le chat widget. En cliquant, le propriétaire remplit un formulaire simple (nom, e-mail, poste, WhatsApp) qui génère un lead dans le D1 (reivindicacoes) et déclenche une notification interne.
C'est l'entonnoir d'entrée pour le modèle B2B : Starter (R$89/mois) → Professional (R$149/mois) → Premium (R$297/mois), avec une montée en puissance des fonctionnalités dans l'espace partenaire et de la visibilité sur la carte.
api endpoints
référence technique| méthode | endpoint | description |
|---|---|---|
| GET | /api/proximas | recherche de brasseries par coords, ville ou texte — moteur principal de la carte et du concierge |
| GET | /api/suggest?q=&pais= | autocomplete de villes (search-as-you-type, KV) |
| GET | /api/stats | total de brasseries actives |
| GET | /api/ping | analytics : enregistre enter/leave/click avec geo et device |
| POST | /api/chat | envoie un message au pipeline Maestro et reçoit la réponse du concierge |
| GET | /api/news?cidade=&limit= | actualités brassicoles par ville (utt-beerfeed) |
| POST | /api/news/collect | force la collecte manuelle d'actualités (normalement cron le lundi) |
| GET | /api/estilos?q= | recherche de bières par style avec photo — alimente la grille de styles |
| GET | /api/parceiro/perfil?slug= | retourne les données complètes de la brasserie : bières, carte, promos, horaires |
| POST | /api/parceiro/cerveja | crée ou met à jour une bière dans le catalogue de la brasserie |
| DELETE | /api/parceiro/cerveja/:id | supprime une bière du catalogue |
| POST | /api/parceiro/cardapio | crée ou met à jour un article de la carte |
| DELETE | /api/parceiro/cardapio/:id | désactive un article de la carte (soft delete) |
| POST | /api/parceiro/campanha | crée ou met à jour une promotion/campagne |
| PUT | /api/parceiro/campanha/:id/toggle | active ou désactive une campagne |
| DELETE | /api/parceiro/campanha/:id | supprime une campagne définitivement |
| POST | /api/parceiro/horario | sauvegarde la grille d'horaires (upsert par jour de la semaine) |
| POST | /api/checkin | enregistre un check-in dans le passeport (tampon) |
| GET | /api/meu-passaporte | retourne le passeport de l'utilisateur (par session) |
| POST | /api/roteiro-salvar | sauvegarde l'itinéraire généré par Maestro dans le D1 |
| GET | /api/admin/painel?roteiro= | données du circuit pour l'espace partenaire (participants, progression) |
| GET | /sitemap.xml | sitemap dynamique avec toutes les brasseries + pages principales |
analytics
rum 1st-partytripbier utilise des analytics 1st-party — sans Google Analytics, sans cookies tiers. Le tracker (/a/tracker.js) est chargé par toutes les pages et envoie des événements à /collect dans utt-analytics.
Données collectées : pages visitées, temps de présence (dwell), récurrence de session, funnel de conversion (accueil → carte → itinéraire → passeport), pays/ville (en-têtes CF), type d'appareil. Sans PII — l'identifiant est un hash SHA1 de l'IP+UA.
Cron quotidien : utt-analytics agrège les événements bruts et enregistre des résumés quotidiens dans le D1 (id : 170900e5) — visiteurs uniques, pageviews, top-5 pays, bandwidth. Le tableau de bord analytics lit ces résumés.
Clics tracés : Instagram, site, WhatsApp — par brasserie, par origine géographique, par appareil.
lgpd
confidentialité · conformitéLa bannière de cookies est injectée par le worker sur toutes les pages via middleware — aucune page n'a besoin d'inclure le script manuellement. Le consentement est stocké dans localStorage pendant 365 jours.
déploiement et opérations
infrastructure · wranglerTout le déploiement s'effectue avec Wrangler CLI depuis le répertoire G:\Site\tripbier\utt-engine\PRD\js\. La configuration se trouve dans le wrangler.toml. Les identifiants API (OpenAI, Serper, Google Places) se trouvent dans G:\Site\tripbier\upg-engine\pipeline\.env.
# Déploiement du worker principal npx wrangler deploy --config wrangler.toml # Publier une page dans le KV (HTML → page:nom.html) npx wrangler kv key put "page:agm.html" \ --path ../html/agm.html \ --remote --binding UTT_CACHE --config wrangler.toml # Upload d'image vers R2 npx wrangler r2 object put "tripbeer-assets/agm/foto.png" \ --file ./foto.png --remote --config wrangler.toml # Requête dans le D1 npx wrangler d1 execute tripbeer-db \ --command "SELECT COUNT(*) FROM cervejarias" \ --remote --json --config wrangler.toml
Règle d'or : modifier un worker ou un HTML sans avoir d'abord listé ce qui change et qui est impacté peut provoquer une régression silencieuse. Le processus correct : (1) lister les modifications et leur impact, (2) confirmer avec Marcos, (3) publier.
Attention : Tripbier et ClubTour sont des comptes/entreprises séparés — ne jamais croiser les workers, les données ou les identifiants entre les deux.
couche sociale
communautéLa couche sociale permet aux utilisateurs du passeport d'interagir entre eux : partager des itinéraires, commenter sur des brasseries, suivre d'autres voyageurs et accumuler un historique de visites visible sur le profil public.
Identité basée sur téléphone + nom (sans mot de passe). Avatar généré automatiquement par DiceBear. Le fil d'activité affiche les visites récentes de la communauté dans chaque ville.
Modération : un regex automatique détecte numéros de téléphone, liens et contenu inapproprié dans les commentaires avant de les sauvegarder dans le D1.