Work / Case study
GoPractice
Class booking and membership software for independent dance, fitness, yoga and boxing studios. I’m building it on my own through Digital Mastiff: the product, the code and the sales.
- Role Founder, developer, sales
- Business Digital Mastiff, Amsterdam
- Stack Symfony, Stimulus, Turbo, Mollie
- Hosting Frankfurt, inside the EU
- Website gopractice.eu
The problem
I’ve been a member of dance studios and boxing gyms for years, and I’ve talked with a lot of owners. They all want the same thing: less admin, more teaching.
In a small studio, the admin grows faster than the studio. Payments are chased by hand and bank transfers reconciled one by one. A seat frees up the night before class and nobody fills it, because filling it means texting people one at a time. And tools priced per booking or per payment cost the most in exactly the months a busy season should be paying off.
As a member I noticed something else: studios change platform every few years. Some owners picked their first tool in a hurry while opening the studio. Some outgrew it. Some chose a tool built for something else and bent it to fit. For others it became too complicated, too expensive, or too hard to get help with. Whatever the reason, moving is painful for the owner and for the members.
Who it’s for
Independent studios and gyms: one studio, not a chain. The smallest plan is meant to be a real product, not a trial, and the studio can add locations, staff and plans on the same platform as it grows.
The approach
The goal is a platform studios stay on because they want to, not because leaving is hard. That turned into a few product decisions:
- No commission. Members pay into the studio’s own Mollie account. GoPractice never takes a cut of a payment and never adds a fee to one.
- A bill that doesn’t move. One flat monthly price, set only by the number of active members: not by bookings, payments or locations.
- Members serve themselves. They book, pause, change plan, cancel, update their payment method and download their invoices without emailing the studio.
- The studio’s brand, not mine. Each studio gets its own address, logo and colours.
- No lock-in. Monthly, no minimum term, and the members’ data belongs to the studio. Moving in from another platform is done together with the owner, not handed over as an import file.
Engineering decisions
Rules in the product, not in settings. Dutch consumer law, with notice periods and the 14-day withdrawal window, is built into the product instead of left as options an owner could get wrong. A refund is issued as a credit note against the original invoice, so the numbered sequence the bookkeeper relies on stays intact.
The domain does the work. A booking deducts from the pass or membership that covers it, and when there are no credits left, the booking doesn’t happen. When someone cancels, the next member on the waiting list is booked and told automatically. A weekly class is set once, and its sessions are generated with per-session cancellations and location changes.
Never touch the studio’s money. GoPractice reads which payment methods are active in the studio’s Mollie account, but never switches anything on and never moves money on the studio’s behalf.
Private by default. It’s hosted in Frankfurt, and the site loads no third-party fonts, scripts or analytics. The one external service is address search: the server, never the visitor’s browser, asks Komoot’s Photon for matches, and sends only the text that was typed.
Architecture I can keep enforcing. GoPractice is a Symfony application. While building it I wrote Praetor, a Claude Code plugin for Symfony projects organised around domain-driven design, hexagonal architecture and CQRS, so the AI tools I use every day follow the same rules I do. I later made it general and released it as open source.
Only what’s real. The product website describes only what is built and running today: nothing on it is a promise for later.
Learning to sell it
Building it was the part I knew. Now I’m wearing different hats: I’m still the developer, and I’m also the founder and the salesperson. I’m learning to market the product, talking to studio owners, studying, and learning how to handle objections. It’s scary and exciting at the same time.