Project · Live

Turma Completa
A class-management platform for limited-capacity studios — pilates and similar activities — where every empty spot is lost revenue. It automates attendance, absences, and make-ups, and the moment a student cancels, it notifies the waitlist by SMS or WhatsApp so the spot gets filled.

Recognition
Turma Completa started as a university project for the entrepreneurship tracks Empreendedorismo e Modelagem de Soluções and Empreendedorismo e Desenvolvimento de Soluções.
It went on to win Pitch Day at PUCRS, where the prize was a full MBA postgraduate course at the university. What began as a class assignment became a real product I kept building and shipping.
What it does
- Class calendar with monthly, weekly, and daily views.
- Attendance control per student, with confirmation and absence warnings.
- Automatic waitlist notifications by SMS or WhatsApp (Infobip) the moment a student cancels, so the open spot can be claimed.
- Make-ups — a student can claim an available spot for the day directly in the app.
- Monthly reports with a day-by-day history of attendance, absences, and make-ups.
- Multi-studio — a superadmin manages multiple independent studios, with an activity log auditing every API mutation.
- Real-time updates via Server-Sent Events: changes made by other users appear without a refresh.
Access roles
- Superadmin — manages every studio and can view the app as any coordinator, teacher, or student.
- Coordinator — manages students, teachers, the class grid, SMS, and studio settings.
- Teacher — sees the full week, confirms attendance, and adds make-up students to their own classes.
- Student — sees their weekly schedule, confirms attendance, reports absences, and reserves make-up spots.
Stack
- React 19 + TypeScript + Tailwind CSS 4 for the app, with a separate Vite landing page.
- Hono 4 (Node.js) backend exposing a REST API plus an SSE stream for live updates.
- PostgreSQL 16 for persistence; passwords hashed with scrypt.
- Infobip for SMS / WhatsApp delivery; Docker for deployment.
Status
Live at turmacompleta.com.br. The source is in a private repository.
Built with
React 19TypeScriptHono 4PostgreSQL 16Tailwind 4Vite 6