Clases Suite
Multi-tenant SaaS for studios and independent teachers: scheduling, class credits, online payments and on-demand content.
- Role
- End-to-end full-stack development
- Year
- 2025
- Status
- In production
- Client
- Own product
- Multi-tenant
- with custom branding
- 2×
- Mercado Pago integrations
- Signals
- Angular 20 + SSR
- Hexagonal
- backend architecture
Overview
Clases Suite lets studios and independent teachers — pilates, yoga, music, languages — run their entire business: scheduling, students, class packages, online payments and on-demand content. Each studio is an isolated tenant with its own branding, plans and payment credentials.
Context
The problem
Teachers and small studios run their business on WhatsApp, Excel and notebooks: they don't know how many classes each student has left, they lose bookings to scheduling mistakes, they collect payments by hand and have no visibility into revenue. Existing solutions are expensive, built for large gyms, or don't support the class-package credit model.
The solution
A SaaS platform where each studio signs up, configures its brand and operates autonomously, with self-service onboarding, its own public landing page and the whole operation solved inside the product.
What it does
Self-service onboarding
The studio signs up, picks a SaaS plan — 7-day trial, monthly, annual or partner — and is operational without any manual intervention.
Public landing page per studio
Each tenant gets its own /c/:slug URL with custom branding: logo and palette applied as CSS variables at runtime.
Smart scheduling
Recurring availability, one-off dates and blocks for holidays or time off, with capacity control on group classes.
Credit-based plans
The student buys a package of 4, 8 or 12 classes and each booking deducts credits automatically, with carry-over and renewal logic.
Dual payment integration
Two distinct flows on Mercado Pago: the studio collecting from its students, and the platform's SaaS subscription charged to the studio.
Technical decisions
- 01
Hexagonal architecture on the backend
Ports and adapters so the domain logic — credits, bookings, renewals — doesn't depend on the database, the payment provider or the video storage.
- 02
Angular 20 with Signals and SSR
Signals for reactive state without the RxJS ceremony throughout the tree, and SSR so each studio's public landing page is indexable.
- 03
Cloudflare Stream for on-demand content
Serving video from S3 means solving transcoding, adaptive bitrate and content protection by hand. Stream covers all of it at a predictable per-minute cost.
Stack
Frontend
- Angular 20
- Standalone components
- Signals
- SSR
- TypeScript
Backend
- NestJS 9
- TypeScript
- Arquitectura hexagonal
- RBAC multi-tenant
Data
- PostgreSQL
- TypeORM
- Redis
- Bull (colas)
Integrations
- Mercado Pago (×2)
- Google Calendar API
- AWS S3
- Cloudflare R2
- Cloudflare Stream
Infra
- Docker
- Netlify
- Cloudflare
- Neon
- Interserver
Next project