Building the Weinberg am Arlberg site meant serving two very different audiences from one content base: a small editorial team who manage a fast-moving program of wine events, and an international audience reading and booking in both German and English. Astro paired with DatoCMS gave us the foundation, but the interesting decisions were in the content modeling and the integrations.
A deliberately strict schema
The biggest early decision was to not editors a blank canvas. Rather than a free-form page builder with endless block options, we modeled events, speakers, and venues as tightly-typed records with a small, opinionated set of structured-text blocks. Every event has the same shape: speaker bios follow a fixed structure, venues carry their own travel and accommodation data, and translations are first-class rather than bolted on. The trade-off — less layout freedom — was made on purpose. In exchange, data entry is fast and consistent, every event page looks coherent without design babysitting, and the team can publish a new event in minutes instead of assembling it block by block. With gql.tada giving us end-to-end type safety from DatoCMS through to the templates, the strict schema also meant the frontend could trust its data completely.
Syncing with a booking platform
Ticketing is the heart of the business, and we didn't want to rebuild it. Instead we integrated Pretix as the booking backend and kept DatoCMS as the source of truth for everything editorial. Each event record links to its Pretix shop, and the site stitches the two together, pulling the right localized ticket widget, wiring up the cart and checkout flow, and keeping the content layer and the commerce layer cleanly separated. Editors never touch ticketing config; they just reference an event, and the booking experience appears in the right language on the right page.
Multilingual, two ways at once
German is the default with no URL prefix, English lives under `/en/`, and the entire URL structure is driven by CMS slugs through a single catch-all route. The same content runs in two deployment modes: a server-rendered staging environment with DatoCMS draft mode and live visual editing for the editorial team, and a fully prerendered static production build served from a CDN for speed and resilience.
What we learned
Constraint is a feature. The instinct to give clients maximum flexibility often produces slower workflows and inconsistent output; a well-chosen, strict schema did the opposite here. We also learned that integrating a specialized platform like Pretix beats reinventing it. The win was in the seams, making two systems feel like one to the end user while keeping them independent for the team. And investing early in type safety between CMS and frontend paid off every single time the content model evolved.