Europe/Berlin) with three studios (Mitte, Kreuzberg,
Prenzlauer Berg), live online classes and eight instructors. The design is
technical but warm: pale concrete, ink and steel, with the real reformer spring
colours (green, yellow, blue, red) as the intensity scale across the site.
Live demo
Source code
Deploy to Vercel
Build it with AI

Tensile — the storefront on desktop and mobile

Homepage hero — the studio, the week's classes and a first-class offer up front
The timetable
One week across every studio and the online room. Each class shows its instructor, its spring colour and a row of bed pips for the beds left. Filter by studio, class, level, instructor or time of day, and share the filtered URL. A class that’s sold out reads Full, with a “next with space” link to the next class of the same type that still has a bed.
Timetable — the week across three studios and online, with beds left and Full classes

Class sheet — the room plan, extras, the price with any discount, and the policy, then on to checkout
The studio model
This is the part worth copying even if you never ship Tensile itself. It uses existing Opencals features only.What’s inside

Privates — 1:1 and duet sessions per studio on live times

Your week — upcoming classes with move, cancel and Join, plus the level path

Mobile — the timetable at phone size
Get started
Clone and install
Add your API key
reformer_studio). It seeds the three studios and the online room, eight
instructors, the weekly timetable, privates, workshops, add-ons, checkout
questions with the waiver, the three discounts and sample bookings, some
of them Full. Then grab a private storefront key (spk_, see
API keys) and set OPENCALS_API_KEY and
AUTH_SECRET in .env.local.Run it
Deploy
Origin.
Leave allowed origins empty on the key you give this template, or those
calls are rejected.{storefrontBaseUrl}/link/{token}, so if it still
points at localhost those emailed links go nowhere.Make it yours
MIT-licensed: rebrand it, restructure it, or use it for client work. Studio knowledge lives inlib/site-config.ts: studios with their rooms and bed
plans, instructor bios, class meta (spring, level, what to bring), the level
path, policies, the off-peak window and add-on copy. Every colour and font is a
Tailwind v4 @theme token in app/globals.css:
classes-and-lessons reference with the full pattern, including Full classes.