tripbier is ontstaan om een eenvoudig probleem op te lossen.
Een ambachtelijke brouwerij ontdekken vereist nog altijd tientallen losse zoekopdrachten, verspreide beoordelingen en verouderde informatie.
Onze missie is de wereldwijde bierkennis te ordenen in één open, doorzoekbaar en door kunstmatige intelligentie ondersteund platform.
We willen niet alleen brouwerijen in kaart brengen.
We willen mensen, regio's, verhalen, stijlen, prijzen en ervaringen met elkaar verbinden.
Van het eerste biertje in Gramado tot een bekroonde brouwerij in Portland — de reis moet naadloos zijn.
Tripbier is een wereldwijd platform voor de ontdekking van ambachtelijke brouwerijen, bierroutes, biertoerisme en geografische intelligentie, dat kunstmatige intelligentie inzet om reizigers, brouwerijen en bestemmingen in 16 landen met elkaar te verbinden.
systeem-
handleiding
Volledige gids van tripbier — platform voor bierroutes gebouwd op Cloudflare Workers, D1, KV en R2. Elke sectie bevat directe links naar de beschreven functionaliteit.
wat is tripbier
overzichttripbier is een serverless platform voor de ontdekking van en routes langs ambachtelijke brouwerijen. Het combineert een georeferenced database met generatieve AI om gepersonaliseerde ervaringen te creëren — van de interactieve kaart tot de route die door een bierconciërge wordt verteld.
De volledige infrastructuur draait op Cloudflare (Workers + D1 + KV + R2), zonder eigen servers, met wereldwijde edge-latentie en variabele kosten per gebruik. Het datamodel is SQLite via D1, verdeeld over meerdere databases per continent.
Het systeem bestaat uit 6 onafhankelijke workers, elk met een specifieke verantwoordelijkheid, die via interne fetch communiceren of status delen via KV.
systeemcijfers
statistieken · jun 2026| statistiek | waarde | opmerking |
|---|---|---|
| Brouwerijen in kaart gebracht (totaal) | 19.905 | Brazilië + 15 internationale landen · tripbeer-map |
| Brouwerijen BR (tripbeer-db) | 5.448 | actief en operationeel |
| Brouwerijen VS (OpenBreweryDB) | 8.353 | geïmporteerd via pipeline |
| Landen met dekking | 16 | BR, US, DE, BE, CZ, AT, UK, IE, FR, ES, IT, PT, NL, NO, SE, AR |
| Steden met redactionele pagina's | 130+ | 63 internationaal + 67+ BR |
| Landingspagina's voor brouwerijen | bekroond | CBC, WBC, WBA — dynamisch gegenereerd |
| Bezoekers / dag | 625 | statistiek jun/2026, organische groei |
| Verzoeken / maand | ~40k | VS + NL + BR als voornaamste herkomst |
| Ondersteunde talen | 15 | pt-BR, en, es, de, fr, it, nl, no, sv, ja en meer |
| Tabellen in de hoofd-D1 | 40+ | tripbeer-db (main) + tripbeer-map (geo) |
| Gemiddelde Google-positie | 6.9 | "best craft beers near me" — 131 vertoningen/dag |
infrastructuur
cloudflare stack| worker | domein | verantwoordelijkheid |
|---|---|---|
utt-engine | tripbier.com/* · *.tripbier.com/* | hoofdrouter — levert KV-pagina's, publieke API, subdomeinen, LGPD-banner |
utt-agentlink | /api/chat (intern) | Maestro-pipeline — 6 mini-agenten voor het genereren van routes via GPT-4o-mini |
utt-brewhub | brewhub.html | chat-widget per brouwerij, gespecialiseerde AI-agent per slug, beveiliging /api/palpite |
utt-analytics | /api/collect (intern) | RUM 1st-party — verzamelt dwell time, terugkeer, funnel; dagelijkse cron-aggregatie |
utt-beerfeed | /api/news | radar van biernieuws per stad — cron maandag |
utt-static | statische assets | levert CSS, JS, afbeeldingen via ASSETS binding |
| database | id | voornaamste inhoud |
|---|---|---|
tripbeer-db | hoofd | BR-brouwerijen, gebruikers, routes, paspoorten, prijzen, stijlen, openingstijden, sociaal, analytics |
tripbeer-map | geo | mondiale brouwerijen met lat/lon/slug voor kaartzoekfunctie |
DB_AMERICAS | continent | US, CA, AR, CL, MX — kaart-fallback |
DB_EUROPE | continent | DE, BE, CZ, FR, ES, IT, PT, UK, NL, NO, SE… |
utt-analytics | id: 170900e5 | RUM-events, sessies, dwell, reisfunnel |
| naamruimte | id | gebruik |
|---|---|---|
UTT_CACHE | 4b5519d0… | HTML-pagina's (page:{naam}.html), sessies (sess:{id}), geo-indexen (idx:{stad}:{land}), statistieken |
KV-sleutelpatroon: page:home.html · page:agm.html · page:copa.html · idx:porto+alegre:br:uuid · sess:abc123 · stats:total_cervejarias
Bucket: tripbeer-assets · Publieke CDN: pub-b8f8998895a64e77a4fa43f286aa08dd.r2.dev/
Slaat brouwerijenlogo's op, hero-afbeeldingen (AVIF/WebP/PNG), og:images voor WhatsApp (JPEG 1200×630 <300KB) en campagne-assets van partners.
hoofdpagina's
sitepagina'sradar / interactieve kaart
functionaliteitDe radar (tripbier.com/mapa.html) is het hart van het platform — een Leaflet-kaart met 19.900+ pins van brouwerijen in 16 landen, met MarkerCluster voor prestaties en realtime filters.
Bij het openen gebruikt de kaart de browserlocatie of het IP-adres (Cloudflare cf.city) om automatisch te centreren. Elke pin opent een kaart met beoordeling, adres, link naar Instagram/website en een knop "toon route in Google Maps". Bekroonde brouwerijen krijgen een onderscheidend markering.
URL-parameters die door de kaart worden geaccepteerd:
| parameter | voorbeeld | effect |
|---|---|---|
?lat=&lng=&zoom= | ?lat=-30.03&lng=-51.21&zoom=11 | centreert op specifieke coördinaten (gebruikt door subdomeinen zoals AGM) |
?cidade=&uf= | ?cidade=Gramado&uf=RS | zoekt en centreert op de opgegeven stad |
?roteiro= | ?roteiro=variedade-curitiba-3d | laadt en markeert brouwerijen van een opgeslagen route |
?proximas=1 | ?proximas=1 | forceert zoeken naar de dichtstbijzijnde brouwerijen |
ai-conciërge
maestro pipelineDe tripbier-conciërge is een pipeline van 6 mini-agenten die een tekstbericht omzet in een gepersonaliseerde bierroute. Elke agent ontvangt een data-envelop, verrijkt deze en geeft hem door aan de volgende.
De conciërge is multifunctioneel by design — geen chatbot met een keuzenu. De gebruiker schrijft in gewone taal en het systeem detecteert de intentie automatisch, zonder om een keuze te vragen:
| de gebruiker zegt | gedetecteerde intentie | wat er gebeurt |
|---|---|---|
| "Heeft Gramado IPA?" | zoeken | geeft brouwerijen met IPA op het menu, met directe link |
| "Wat is een Weizen precies?" | gesprek | sommelier beantwoordt vragen over stijl, geschiedenis en combinaties |
| "Ik wil 3 dagen naar Curitiba" | route genereren | volledige pipeline: weer → curator → gepersonaliseerd verhaal |
| "Waar is Dado Bier?" | navigeren | opent de kaart met de pin van de brouwerij |
| "poa, fds, craft" | route genereren | normaliseert afkorting → extraheert intentie → genereert weekendroute in POA |
De Validator detecteert de 4 modi zonder enige LLM-aanroep — pure JavaScript-logica. Normaliseert afkortingen (poa → Porto Alegre, cwb → Curitiba) vóór de Extractor. De Curator bevraagt databases in cascade: DB Brasil → DB_AMERICAS → DB_EUROPE → DB_ASIA → Serper Discovery als uiteindelijke fallback.
bierpaspoort
gamificatie · pwaHet tripbier-paspoort is een installeerbare PWA (Progressive Web App) waarmee de gebruiker stempels kan verzamelen bij elk bezoek aan een partnersbrouwerij. Het is de gamificatie- en loyaliteitsmotor van het platform.
Gebruikersstroom: De gebruiker gaat naar passaporte.tripbier.com, installeert de app op het telefoonscherm, identificeert zich via naam en WhatsApp (zonder registratie) en ontvangt stempels bij check-in bij brouwerijen in het circuit.
Beschikbare circuits: Elke partnerroute heeft een circuit met N stops. Alle stops voltooien ontgrendelt een voordeel bij de partnerbrouwerij (gratis drankje, korting, exclusieve ervaring). Het partnerpanel (admin-parceiro) toont in realtime wie heeft voltooid en maakt het mogelijk de prijs via WhatsApp te versturen.
Niveaus: Nieuwsgierig → Leerling → Ontdekker → Meester → Sommelier — gebaseerd op het totale aantal verzamelde stempels.
routes
genereren en delenRoutes worden gegenereerd door de Maestro-pipeline en automatisch opgeslagen in D1 met een permanente, unieke URL — zonder inloggen. De URL kan via WhatsApp worden gedeeld, in e-mail worden opgenomen of als favoriet worden opgeslagen.
URL-formaat: tripbier.com/roteiros.html?id={slug} — waarbij de slug door de Curator wordt gegenereerd op basis van stad, profiel en hash van de selectie (bijv. variedade-porto-alegre-3d-a1b2).
Elke route slaat op: lijst van brouwerijen (id, naam, curatornotitie), stad, gekozen profiel, aantal dagen, weer op het moment van genereren en het verhaal van de Presentator.
16 landen
mondiale dekkingtripbier heeft actieve dekking in 16 landen, met database, redactionele steden en routing via de conciërge. Elk land heeft stadspagina's en integratie met de wereldkaart.
De landenpagina's zijn dynamisch — ze bestaan niet als statische bestanden. Ze worden in realtime door de worker gegenereerd op basis van D1-gegevens: brouwerijen, steden, prijzen en redactionele content. Dit betekent dat het toevoegen van een nieuw land aan de database automatisch alle bijbehorende pagina's aanmaakt, zonder handmatig publicatiewerk. Het is schaalbare infrastructuur vermomd als content.
stadspagina's
geografisch redactioneelElke stad met een kritische massa brouwerijen krijgt een samengestelde redactionele pagina — niet automatisch gegenereerd, maar geschreven met een lokale identiteit. Het basistemplate is caxias.html (serifpatroon met zijbalk, hero, pull-quote en kaartgrid).
Paginastructuur: hero met lokale foto → redactioneel "waarom bezoeken" → pull-quote → brouwerijgrid met beoordeling/insta/site/agent → evenementen → voorgestelde route. De nieuwssectie wordt in realtime gevoed door utt-beerfeed.
Alle internationale stadspagina's bevinden zich in de landsubmap: /de/berlim.html, /be/bruges.html, /it/roma.html, enzovoort. Net als de landenpagina's worden stadspagina's dynamisch gegenereerd — de worker assembleert de HTML vanuit D1 bij elk verzoek, zonder vooraf gecompileerde bestanden. Een nieuwe stad met voldoende brouwerijen in de database heeft direct zijn pagina beschikbaar.
| uitgelicht | link |
|---|---|
| Caxias do Sul (RS) — referentietemplate | tripbier.com/caxias.html |
| Blumenau (SC) — hoofdstad van Santa Catarina | tripbier.com/blumenau.html |
| Porto Alegre (RS) — AGM-hub | tripbier.com/porto-alegre.html |
| Gramado (RS) — toerisme + craft | tripbier.com/gramado.html |
| Brugge (België) — wereldreferentie | tripbier.com/be/bruges.html |
| Berlijn (Duitsland) | tripbier.com/de/berlin.html |
| Praag (Tsjechië) | tripbier.com/cz/praga.html |
landingspagina's voor brouwerijen
virtual landingBekroonde brouwerijen (CBC, WBC of WBA) krijgen automatisch een dynamische landingspagina gegenereerd op basis van D1-gegevens — zonder handmatige tussenkomst. Toegang via subdomein: slug.tripbier.com.
Weergegeven inhoud: naam, stad/staat, Google-beoordeling en stemmen, openingstijden per dag van de week, bieren in productie (naam, stijl, ABV, IBU), prijzen met medaille en jaar, gerelateerde blogposts, kaartweergave, knoppen voor Instagram/website/WhatsApp en chat met een AI-agent gespecialiseerd in de brouwerij.
Toegangsregel: Als de brouwerij een prijs heeft → volledige landingspagina renderen. Als er geen prijs is maar wel Instagram of website → doorverwijzen (302) naar het sociale netwerk. Als er niets is → 404.
Cache: elke landingspagina wordt 1 uur opgeslagen in de Cloudflare edge cache (stale-while-revalidate=86400) — geen CPU-gebruik bij terugkerende bezoeken.
wedstrijden en prijzen
palmarestripbier indexeert de medailles van de belangrijkste ambachtelijke bierwedstrijden en toont deze op de landingspagina's van brouwerijen en op de prijzenpagina. Medailles zijn een rangschikkingscriterium in de Curator.
| wedstrijd | afkorting | bereik | medailles |
|---|---|---|---|
| Campeonato Brasileiro de Cerveja | CBC | Nationaal — Blumenau/SC | Gran Champion, Goud, Zilver, Brons |
| World Beer Cup | WBC | Internationaal — VS | Gold, Silver, Bronze |
| World Beer Awards | WBA | Internationaal — VK | Country Winner, Gold, Silver |
| Concurso Gaúcho de Cerveja (AGM) | CGCBA | RS — georganiseerd door AGM | Goud, Zilver, Brons |
| Mondial de la Bière | MDB | Brazilië + Internationaal | Médaille d'Or, d'Argent, de Bronze |
partnerpanel
admin · brouwerijenHet partnerpanel is de beheerinterface voor eigenaren van brouwerijen. Toegang via de brouwerij-slug (zonder inloggen — auth via token in URL, nog te implementeren). Directe URL: tripbier.com/admin-parceiro?slug={slug}.
| tabblad | wat wordt beheerd | D1-tabel |
|---|---|---|
| 🗺️ routes | Deelnemers aan paspoortcircuits: voortgang, check-ins, knop "belonen" via WhatsApp | passaporte_carimbos · passaportes |
| 🍺 bieren | Biercatalogus: naam, stijl, ABV, IBU, beschrijving, foto (URL) | estilos_cervejaria |
| 📋 menu | Menu-items: categorie, naam, prijs, beschrijving, foto — zichtbaar op de landingspagina | lp_cardapio |
| 🎯 acties | Campagnes: titel, type, korting %, geldigheidsdatum, actief/inactief-schakelaar | lp_campanhas |
| 🕐 openingstijden | Wekelijks rooster maandag→zondag: opent, sluit, gesloten, opmerking | horarios |
agm — associação gaúcha de microcervejarias
subdomein · partnerschapagm.tripbier.com is een subdomein gewijd aan het partnerschap tripbier × AGM — een redactionele pitch-pagina met de 19 aangesloten brouwerijen in kaart, de geschiedenis van de gaúcho craft-beweging en een CTA voor lidmaatschap.
Historische inhoud gebaseerd op geverifieerd academisch onderzoek: Cruz, R.C. (2016). Consumo e Formação de Mercado: um estudo sobre as microcervejarias de Porto Alegre. Dissertação UNISINOS.
Tijdlijn: Dado Bier (1995, eerste micro-brouwerij BR) → WE Consultoria (1997) → Acerva Gaúcha (2003) → AGM opgericht door Jorge Gitzler → verlaagd ICMS in RS → Polo Anchieta (2010) → 50+ aangesloten vandaag.
claim your brewery
b2b-acquisitieBrouwerijen zonder volledig profiel tonen een CTA "Is dit uw brouwerij?" op de landingspagina en in de chat-widget. Na het klikken vult de eigenaar een eenvoudig formulier in (naam, e-mail, functie, WhatsApp) dat een lead aanmaakt in D1 (reivindicacoes) en een interne melding stuurt.
Dit is de instapfunnel voor het B2B-model: Starter (R$89/maand) → Professional (R$149/maand) → Premium (R$297/maand), met extra functies in het partnerpanel en meer zichtbaarheid op de kaart.
api endpoints
technische referentie| methode | endpoint | beschrijving |
|---|---|---|
| GET | /api/proximas | zoekt brouwerijen op coördinaten, stad of tekst — hoofdmotor van kaart en conciërge |
| GET | /api/suggest?q=&pais= | autocomplete van steden (search-as-you-type, KV) |
| GET | /api/stats | totaal actieve brouwerijen |
| GET | /api/ping | analytics: registreert enter/leave/click met geo en apparaat |
| POST | /api/chat | stuurt bericht naar de Maestro-pipeline en ontvangt antwoord van de conciërge |
| GET | /api/news?cidade=&limit= | biernieuws per stad (utt-beerfeed) |
| POST | /api/news/collect | forceert handmatige nieuwsverzameling (normaal cron maandag) |
| GET | /api/estilos?q= | zoekt bieren op stijl met foto — vult stijlgrid |
| GET | /api/parceiro/perfil?slug= | geeft volledige brouwerijgegevens terug: bieren, menu, acties, openingstijden |
| POST | /api/parceiro/cerveja | maakt bier in de brouwerijcatalogus aan of werkt het bij |
| DELETE | /api/parceiro/cerveja/:id | verwijdert bier uit de catalogus |
| POST | /api/parceiro/cardapio | maakt menu-item aan of werkt het bij |
| DELETE | /api/parceiro/cardapio/:id | deactiveert menu-item (zachte verwijdering) |
| POST | /api/parceiro/campanha | maakt promotie/campagne aan of werkt deze bij |
| PUT | /api/parceiro/campanha/:id/toggle | activeert of deactiveert campagne |
| DELETE | /api/parceiro/campanha/:id | verwijdert campagne permanent |
| POST | /api/parceiro/horario | slaat openingstijden op (upsert per dag van de week) |
| POST | /api/checkin | registreert check-in in het paspoort (stempel) |
| GET | /api/meu-passaporte | geeft het paspoort van de gebruiker terug (per sessie) |
| POST | /api/roteiro-salvar | slaat door Maestro gegenereerde route op in D1 |
| GET | /api/admin/painel?roteiro= | circuitgegevens voor het partnerpanel (deelnemers, voortgang) |
| GET | /sitemap.xml | dynamische sitemap met alle brouwerijen + hoofdpagina's |
analytics
rum 1st-partytripbier gebruikt 1st-party analytics — zonder Google Analytics, zonder cookies van derden. De tracker (/a/tracker.js) wordt geladen door alle pagina's en stuurt events naar /collect in utt-analytics.
Verzamelde gegevens: bezochte pagina's, verblijfsduur (dwell), sessierecurrentie, conversiefunnel (home → kaart → route → paspoort), land/stad (CF headers), apparaattype. Geen PII — de identificator is een SHA1-hash van IP+UA.
Dagelijkse cron: utt-analytics aggregeert de ruwe events en schrijft dagelijkse samenvattingen weg in D1 (id: 170900e5) — unieke bezoekers, pageviews, top-5 landen, bandbreedte. Het analytics-dashboard leest uit deze samenvattingen.
Bijgehouden klikken: Instagram, website, WhatsApp — per brouwerij, per geografische herkomst, per apparaat.
privacy
privacy · complianceDe cookiebanner wordt door de worker via middleware op alle pagina's geïnjecteerd — geen enkele pagina hoeft het script handmatig op te nemen. De toestemming wordt 365 dagen opgeslagen in localStorage.
deploy en operaties
infrastructuur · wranglerAlle deploys worden uitgevoerd met de Wrangler CLI vanuit de map G:\Site\tripbier\utt-engine\PRD\js\. De configuratie staat in wrangler.toml. API-sleutels (OpenAI, Serper, Google Places) staan in G:\Site\tripbier\upg-engine\pipeline\.env.
# Deploy van de hoofdworker npx wrangler deploy --config wrangler.toml # Pagina publiceren in KV (HTML → page:naam.html) npx wrangler kv key put "page:agm.html" \ --path ../html/agm.html \ --remote --binding UTT_CACHE --config wrangler.toml # Afbeelding uploaden naar R2 npx wrangler r2 object put "tripbeer-assets/agm/foto.png" \ --file ./foto.png --remote --config wrangler.toml # Query in D1 npx wrangler d1 execute tripbeer-db \ --command "SELECT COUNT(*) FROM cervejarias" \ --remote --json --config wrangler.toml
Gouden regel: een worker of HTML aanpassen zonder eerst te vermelden wat er wijzigt en wie erdoor wordt geraakt, kan leiden tot stille regressie. Het juiste proces: (1) wijzigingen en impact vermelden, (2) bevestigen met Marcos, (3) publiceren.
Let op: Tripbier en ClubTour zijn afzonderlijke accounts/bedrijven — nooit workers, gegevens of inloggegevens tussen beide mengen.
sociale laag
gemeenschapDe sociale laag stelt paspoortgebruikers in staat met elkaar te communiceren: routes delen, commentaar geven bij brouwerijen, andere reizigers volgen en een bezoekgeschiedenis opbouwen die zichtbaar is op het publieke profiel.
Identiteit gebaseerd op telefoonnummer + naam (zonder wachtwoord). Avatar automatisch gegenereerd door DiceBear. De activiteitsfeed toont recente bezoeken van de gemeenschap in elke stad.
Moderatie: een automatische regex detecteert telefoonnummers, links en ongepaste inhoud in reacties vóór opslag in D1.