All projects
Client project

Rishi Estudio

End-to-end management for a Pilates studio: credit-based memberships, recurring scheduling, bookings, payments and automatic emails.

Role
Full-stack: architecture, backend, frontend, database and deployment
Year
2025
Status
In production · continuous improvement
Client
Pilates studio
View live
2
profiles: admin and student
Recurring
fixed-slot booking
Credits
tracked automatically
Monthly
revenue report

Overview

A full-stack web platform for the complete management of a Pilates studio: membership plans with class credits, scheduling with recurring availability, student bookings, payments and automatic email notifications.

Context

The problem

The studio managed students, plans and schedules with spreadsheets and WhatsApp, which created three concrete problems: credits out of control — nobody knew for sure how many classes each student had left or when their plan expired — monthly rescheduling — long-standing students had to request the same time slots again every month — and no business visibility, with no monthly view of revenue or class occupancy.

The solution

An application with two distinct profiles: an admin panel with CRUD for plans, students, class types and availability, weekly and monthly scheduling, plan assignment with a start date, holiday management and revenue reporting; and a student portal with a public landing page, sign-up, “My plan” showing remaining credits and expiry, and a schedule to book, book recurringly or cancel.

What it does

Credits with expiry

Each student sees how many classes they have left and when their plan expires. Deduction happens automatically on booking.

Recurring booking

The student fixes their usual time slots once and stops rescheduling every month.

Scheduling with availability and holidays

Recurring availability per class type, with holiday management and blocks that propagate to bookings.

Monthly revenue report

A monthly view of revenue and occupancy: the business figure that simply didn't exist before.

Automatic notifications

Automatic emails at the relevant points of the cycle: confirmations, expiries and reminders.

Technical decisions

  1. 01

    Modelling credits as a domain, not a counter

    The plan, its expiry, consumption and cancellation form a cycle with its own rules. Treating it as a domain entity — rather than a number being subtracted — is what makes it possible to cancel, refund and renew without inconsistencies.

  2. 02

    The foundation of a larger product

    This system was the starting point later refactored into Nutri Suite, the multi-tenant nutrition SaaS.

Stack

Backend

  • NestJS
  • TypeScript
  • TypeORM
  • Nodemailer

Data

  • PostgreSQL
  • Migraciones versionadas

Frontend

  • Portal del alumno
  • Panel de administración
  • Landing pública

Infra

  • Deploy propio
  • Dominio propio

Next project

Vibe