
Classmio, un SaaS para gestionar academias
Classmio es una plataforma multi-tenant para academias como baile, artes marciales, idiomas, fitness... — alumnos, horarios, cuotas y cobros en un panel privado, con una web pública propia para cada academia.
Classmio es un SaaS vertical para la gestión de academias presenciales y online como: de baile, artes marciales, idiomas, fitness, formación… cualquier negocio que organice grupos, horarios y alumnos de forma recurrente. Es mi último proyecto lanzado, y el primero que llevo de verdad hasta producción como producto comercial, no como ejercicio de aprendizaje. Puedes verlo en classmio.com.
La idea nace de un problema muy concreto: la mayoría de estas academias gestionan alumnos, horarios y cobros a base de hojas de cálculo, grupos de WhatsApp y algún cuaderno. Classmio centraliza todo eso en un panel privado por academia — y añade, además, una web pública que esa academia ni siquiera tenía antes.
Multi-tenant: una sola app, una sola base de datos
Classmio no es “una instalación por cliente”. Es una única aplicación y una única base de datos en la que cada academia es un tenant independiente: todas las tablas de negocio quedan separadas por academy_id, y el aislamiento entre academias se refuerza con Row Level Security a nivel de PostgreSQL, no solo con filtros en el código.
Un mismo usuario puede pertenecer a varias academias con roles distintos en cada una — ser propietario de la suya y alumno en la de un amigo, por ejemplo — así que la identidad global del usuario vive separada de su relación concreta con cada academia (membership). Cada membership, a su vez, separa dos cosas que suelen mezclarse: el rol de acceso al panel (propietario, administrador o ninguno) y el rol funcional dentro de esa academia (profesor o alumno).
Todo el día a día de una academia, en un panel
- Alumnos y profesores: fichas completas, estado, notas y grupos en los que están inscritos.
- Memberships con doble rol: un rol de acceso al panel (propietario / administrador) y un rol funcional dentro de la academia (profesor / alumno), independientes entre sí.
- Clases y grupos: franjas horarias, varios profesores por clase, fecha de fin y clases privadas visibles solo para los inscritos.
- Horarios: calendario semanal navegable sobre fechas reales, con festivos y vacaciones marcados y responsive (1, 3 o 7 columnas según el dispositivo).
- Asistencia por sesión: presente, ausente, tarde o justificado, clase a clase.
- Cuotas generadas automáticamente a partir de los planes de precio de cada academia — nunca se crean a mano.
- Solicitudes e invitaciones unificadas: un alumno pide unirse desde la web pública, o la academia invita directamente por enlace.
Cobros: dos capas de Stripe, dos negocios distintos
Classmio integra Stripe dos veces, para dos cosas que no hay que confundir:
- La academia paga a Classmio su suscripción SaaS (plan gratuito o de pago), gestionada con Stripe Billing y su portal de facturación.
- El alumno paga a la academia, con tarjeta, a través de Stripe Connect (cuentas Express). El dinero va directo a la cuenta bancaria de la academia — Classmio no se queda comisión sobre lo que la academia cobra a sus propios alumnos, solo sobre la suscripción que la academia paga por usar la plataforma.
Las cuotas se generan solas a partir de los planes de precio configurados, se pueden cobrar con tarjeta o marcarlas como cobradas por otro medio, y admiten reembolso sin salir de Classmio.
Una web pública para cada academia
La mayoría de estas academias no tenía página web propia. Cada academia en Classmio tiene la suya, con su propio dominio de contenido — horarios, equipo, planes y formulario de contacto — sin que nadie tenga que tocar código.
- Página propia por academia, con información, horarios, equipo y planes de precio visibles para cualquiera.
- 15 plantillas visuales distintas (de un minimalismo editorial a estéticas como neón, artes marciales o street), cada academia elige la suya.
- Directorio público de academias, con buscador y filtros por categoría y modalidad (online / presencial).
- Perfiles públicos de profesores, con foto y biografía.
- Solicitud de plaza directamente desde la web pública, sin pasar por el panel privado.
- SEO cuidado: metadatos, sitemap y datos estructurados (JSON-LD) en cada página pública.
Planes, de gratis a empresa
Classmio se vende en cinco tramos, con límites de alumnos/profesores y funcionalidades que se van desbloqueando según el plan:
Gratis — hasta 10 alumnos
Starter — 29€/mes, hasta 50 alumnos
Pro — 59€/mes, hasta 150 alumnos
Business — 119€/mes, hasta 500 alumnos
Enterprise — precio a medida, sin límite de alumnos
Seguridad, no como añadido
Con datos de alumnos y pagos de por medio, la seguridad no es una capa opcional. Además del aislamiento por academy_id reforzado con Row Level Security en todas las tablas, Classmio valida en servidor cada cambio de rol (un administrador nunca puede tocar a un propietario, ni concederse a sí mismo ese rol desde un formulario), revisa que cualquier id que llega de un formulario pertenezca de verdad a esa academia antes de usarlo, y aplica rate limiting en los puntos de entrada más sensibles: login, registro y solicitudes de ingreso a una academia.
Stack técnico
- SvelteKit + Svelte 5 (Runes) y TypeScript estricto en todo el proyecto.
- Supabase como backend: PostgreSQL, autenticación y Row Level Security activado en todas las tablas.
- Drizzle ORM como única fuente de verdad del esquema de base de datos, sobre PostgreSQL.
- Stripe, en dos integraciones independientes: suscripción SaaS de la academia a Classmio, y Stripe Connect para que cada academia cobre a sus propios alumnos.
- Zod para validación, tanto en formularios como en el servidor.
- mdsvex para el blog y el contenido editorial de cada academia.
- Vitest para pruebas unitarias y de componentes, Playwright para end-to-end.
- Desplegado en Vercel, con conexión directa por TCP de Drizzle a Postgres (vía el pooler de Supabase en modo transacción).
Classmio está publicado y en uso real, no es una demo ni un prototipo.