A Brazilian Jiu-Jitsu academy I co-own and teach at, which makes it the one portfolio piece where I carry the consequences of my own decisions. The site has a single job: turn a curious visitor into a booked intro class.
My own academy: the piece where I live with every decision I made.
Class times on a gym website are the single thing a visitor will act on, and the single thing that rots. The site reads its hours from the system that actually runs the academy rather than from a page someone remembers to update. Change the room, and the website has already changed.
Every image is from the mats. The archive is captioned by machine vision and queried in plain English, so pulling the right frame for a program card takes seconds instead of an afternoon. No stock, no filler. The site looks like the room feels, because it is literally the room.
An 18-component design system underneath the theme, so a new program page or a seasonal promotion is assembled from parts that already agree with each other. Growth stops being a redesign risk. This is the difference between a website and a site that is still coherent two years later.
Walking into a jiu-jitsu gym for the first time is intimidating, and a page full of equal-weight options makes it worse. There is one obvious next step from anywhere on the site. Everything else (lineage, instructors, the article library) is available, but it never competes with the booking.
Members, schedule and the daily operational glue run on a self-hosted hub rather than on a per-seat subscription, which is also the reason the website can read live data at all. The site is the visible surface of the system that actually runs the academy. That is the whole explanation for why its schedule is never wrong, and it is not a thing you can buy.
What was decided, in the order it was decided. The how stays on my bench — but the reasoning is the part worth showing anyway.
