Rinze Buunk singing on stage in a packed festival tent, with confetti and light beams over the crowd

Rinze op jouw feestje?

Rinze Buunk is an 18-year-old party singer who plays everything from birthday parties to festival tents. He needed a site that books him, and a CMS he could run himself between two gigs.

I designed and built the site on my own, from the first conversation to launch. The public site turned out nicely, but the part I’m proudest of is the CMS behind it.

From brainstorm to launch

Brainstorm→Moodboard→Design language→Wireframes→Build→Live

We started with brainstorm sessions together: who books Rinze, what do they want to know, and what does he want to stop doing by hand? Organisers want to see what he costs and whether he’s free. Rinze wanted to stop keeping his calendar, photos and booking requests in three different places.

From there I made a moodboard with references from other Dutch party artists and their booking pages. We went through it together and kept what felt like Rinze: big condensed type, real stage photos and a calm navy instead of loud colours.

Moodboard with colour swatches, Barlow Condensed type samples and reference websites of other Dutch artists

The moodboard: navy swatches, type tests and reference sites.

That became a small design language. Wireframes then fixed the big moves, like the full-screen hero with the logo and the header that turns into the logo once you scroll.

Rinze Buunk

Barlow Condensed for headings, DM Sans for everything else.
navy
mist
cloud
ink
Rinze op jouw feestje?Boek nu!

The public site

Four pages: home, bookings, agenda and media. The bookings page shows packages and prices up front, the agenda can be subscribed to, and the media page fills itself with the photos of past shows.

Bookings page with two package cards and prices
Mobile homepage with a Boek nu button and the logo over video

Bookings on desktop, and “Boek nu!” always one tap away on mobile.

Agenda page with the next show highlighted and a subscribe button
Agenda, with private parties marked “besloten”.
Media page with a row of photos from a show
Media, one row per show.

The CMS

This is where most of the work went. Rinze isn’t technical and does most things from his phone, often right after a show. So instead of an off-the-shelf CMS, I built one for exactly his work, in Dutch, where every screen does one job. On the site it’s simply called Beheer.

CMS overview with new booking requests and upcoming shows
The overview: new requests and what’s coming up.

One calendar for everything

The agenda is a real CalDAV calendar. Rinze and his team see it in the calendar app on their phones, and the website reads from the same calendar. An item is either a public show or an internal note like a rehearsal. A show can also be a private party: it appears on the site as “besloten”, but visitors can’t add it to their calendar.

Agenda in month view with shows in navy and internal items stripedDialog for editing a show with type, status and public or privateModal for editing a photo's description, caption and photographerBulk edit modal that sets the photographer for three selected photosPhoto and video grid where the first item is marked as cover

Shows in navy, internal items striped, options dashed.

Edit a show in place, including publiek or besloten.

Each photo is a tile; its details open in a modal.

Credit one photographer on a whole selection at once.

Drag to reorder. The first item, even a video, becomes the cover.

Uploads that can’t break the budget

The whole site runs on Cloudflare’s free tier, so storage matters. Rinze can drop in anything his phone makes, and the browser shrinks it before it’s uploaded. Location data is stripped, and videos are re-encoded with WebCodecs. He never thinks about file sizes, and the bucket stays small.

HEIC · JPEG · PNG→WebP · max 2560 px · max 4 MBMOV · MKV · 4K→MP4 · max 1080p · max 90 MB

Booking requests that run themselves

A request from the site becomes a booking and an option in the calendar straight away. Changing the status updates the calendar item too, so the agenda and the inbox can’t drift apart.

Nieuw Evenement blijft onder voorbehoud

Gecontacteerd Evenement blijft onder voorbehoud

Bevestigd Evenement wordt Normaal, nog verborgen op de site

Afgewezen Evenement wordt Geannuleerd

List of booking requests with status filters
All requests in one list, filterable by status.

Built for a phone first

Login is a magic link by email, with no passwords to forget. Team members get one of four roles, from owner down to view-only. And every screen works on a phone, because that’s where Rinze actually uses it.

CMS overview on a phone
Agenda list view on a phone
Photo grid of a show on a phone
Booking status on a phone

CMS screenshots use demo data, not Rinze’s real agenda or customers.

Result

Rinze now runs his own site: he adds shows, uploads photos the same night, and answers booking requests from one inbox that keeps his calendar in sync. For me, the best part was doing the whole thing with him, from the first brainstorm to the last round of small fixes before launch.