American Youth Dance Theater — a NYC dance studio operating since 1996 across two locations (Upper East Side and Washington Heights) — had been running their entire enrollment operation on Active, a registration platform built for outdoor recreational events like camping and sports leagues. The $15,000 annual license fee represented nearly 80% of the studio's net profit. It had no native concept of dance divisions, recital cycles, or per-class fee conditions — and its volume-based pricing model was designed to scale costs upward as AYDT grew.
The project brief was clear: build a simple, affordable, purpose-built replacement. Not another SaaS subscription. A platform AYDT owns outright — with full control over its UX, its data, and its operating costs. The result is a dual-surface system: a consumer-facing enrollment portal for families and a full admin operations dashboard for studio staff, both powered by a single Supabase backend.
The build was structured around three goals from the proposal: complete ownership (eliminate recurring license fees with a system the studio controls), forecastability (open-source infrastructure with transparent, stable costs), and reclaiming the UX and data layer (full analytics visibility via Google Analytics 4 and Sentry). The decision to build a custom solution rather than renew Active's license pays for itself immediately. Running on Vercel, Supabase, and Resend, AYDT's infrastructure costs fall from $15,000/year to an estimated $780–$1,908/year — the same capability at a fraction of the price.
The backend is a 65-table Supabase schema modeled around how a dance studio actually operates. The fee engine is the most complex component: enrollment cost is resolved server-side by evaluating a conditional rule chain — division, class count, semester type, multi-dancer family discounts, and coupons — in sequence. Automatic fees (registration, recital, costume) attach or detach based on class properties, not user input. Data migration from Active runs as a three-step pipeline: clean and archive inactive records from Active, populate the Supabase database, then seed Resend with user data and trigger welcome emails — executable at any time without interrupting the existing system.
The client portal leads with a near-black hero — it reads as a stage before the first word registers, placing the studio's 30-year identity front and center. The violet-to-rose gradient on 'Center Stage' is the only decorative moment; it earns that prominence by being the only color that isn't load-bearing. Below the hero, the portal content lives on a cool lavender-tinted off-white — not pure white, but close enough to feel neutral while still belonging to the same color family as the hero.
The admin surface flips to a light, high-contrast environment — staff spending hours in the dashboard need legibility over atmosphere. Deep crimson anchors the primary actions: warm enough to feel branded without competing with the data-dense tables and registration lists that dominate the screen. Light bone grounds the table backgrounds; dark slate keeps operational data readable across long work sessions.