APR 2026
RUITERHAL RAVELS BOOKING MANAGER
The Client
Ruiterhal Ravels runs horse-riding lessons and events out of two arenas in Ravels, Belgium. Their website is the main way new clients find them, so it had to actually pull weight. They came to me because the Squarespace setup they were on couldn't be customized enough to do what they needed.
The Brief
A real booking system instead of a calendar plugin pretending to be one. Two arenas with their own schedules. Sponsor management. A way to block out days for maintenance without it turning into a manual mess. Payments that actually clear. And, ideally, something with a bit more personality than the average equestrian website.
The Challenge
The hard part was not any single feature. It was that every part of the business touches every other part. Bookings depend on the calendar. The calendar depends on which arena is available. Sponsors need to live in the database but also render in 3D space. Payments need to be confirmed before bookings get locked in. Emails need to fire at the right moments without anyone clicking a button. Building each piece in isolation would have been quick. Making them all work together without the seams showing was the actual job.
The Front Door
The landing page was a chance to set a tone. It has a proper visual identity, a bit of personality, and a few small jokes hidden in the copy for anyone reading carefully. The about and contact pages got the same treatment: actually designed, not just dropped in as an afterthought.
The 3D Arena
The centerpiece is a Three.js model of the arena that visitors can click around in. Clicking a section opens the booking flow for that space, so the 3D view doubles as the navigation for the entire reservation system. Sponsors render inside the model itself, pulled from data the admin uploads through the dashboard, which means the team can add a new sponsor and watch it appear in the arena within seconds without anyone touching code.
The Admin Layer
Behind the public site sits a full management dashboard. The team can create events, block out maintenance days, manage incoming bookings, and handle the sponsor pipeline from one place. The calendar is the operational heart of it. Anything that touches scheduling lives there, so there is one source of truth instead of several half-synced ones spread across different tools. Sponsor uploads are automated end-to-end: drop in the logo and the metadata, and the system handles the placement, the storage, and the rendering inside the 3D model.
Payments and Email
Payments run through Mollie, which made sense for a Belgian client and gave them the local payment methods their customers actually use. Bookings only finalize once Mollie reports a successful transaction, so the system never ends up holding ghost reservations on the calendar. Transactional email goes through Resend: booking confirmations, cancellation notices, and the things people expect to land in their inbox automatically.
The Detail That Matters
The 3D arena is the part people will talk about, but the part that makes the project actually work is the loop between admin actions and what the visitor sees. A change in the calendar updates availability. An uploaded sponsor appears in the arena. A confirmed Mollie payment finalizes a booking and triggers a Resend email. None of that is exciting in isolation, but stitched together, it means the client can run the business from one screen.
What It Represents
This was a project where the technical choices and the design choices were the same choices. A 3D arena that doubles as a booking interface only works if the data model supports it. An admin dashboard only saves time if it covers everything in one place. A landing page only lands if it has a voice. Each of those pieces could have been done more conventionally, and the result would have been a website that worked. What the client wanted, and what they got, was something that actually feels like theirs.