Volver a Proyectos
Plataforma de Cursos — Sistema de Matrícula y Gestión Multi-Empresa
Tecnología Educativa (EdTech)
Producción

Plataforma de Cursos — Sistema de Matrícula y Gestión Multi-Empresa

Dos interfaces, una sola base de código: un catálogo público de cursos donde los estudiantes se matriculan, y un sistema administrativo completo donde las instituciones gestionan cursos, matrículas y usuarios — sirviendo a múltiples empresas con infraestructura aislada

Next.js 15MUIFastAPIPython 3.12CouchDBDockerNginxNextAuthApollo Server
2 (Coyol + Evolution)
Instituciones atendidas
4 (isolated)
Servicios por institución
1-line script → compose
Aprovisionamiento
~17 months
Período de desarrollo
465
Commits en todas las ramas
~23,000 lines
Código fuente en producción

Las instituciones educativas no tienen los mismos flujos de trabajo, los mismos datos ni la misma marca. Pero todas necesitan lo mismo: un catálogo de cursos que la gente pueda explorar, un proceso de matrícula que recopile todo lo legalmente requerido y un panel administrativo para gestionarlo todo.

El enfoque antiguo era construir un sistema a la medida para cada institución. Esta plataforma funciona distinto: una base de código, una arquitectura, que aprovisiona instancias aisladas por institución — cada una con su propia base de datos, su propia API, su propio frontend — todas servidas a través de un solo gateway. El resultado es que agregar una nueva institución no es un proyecto nuevo. Es un cambio de configuración.

El problema

Dos operadores de parques industriales — Zona Franca Coyol y Evolution Free Zone — necesitaban ofrecer cursos profesionales a las empresas de sus parques. Cada uno necesitaba:
- Un catálogo público de cursos que los estudiantes pudieran explorar y buscar

- Un proceso de matrícula en línea que recopilara los documentos de consentimiento legalmente requeridos

- Un panel administrativo para gestionar cursos, matrículas, usuarios y generar reportes

- La capacidad de operar de forma independiente — marca distinta, cursos distintos, datos distintos

El enfoque tradicional — construirlo dos veces, mantener dos bases de código, contratar dos equipos de soporte — habría costado más que el programa mismo. Necesitaban una sola solución que sirviera a ambos, sin compromisos.

El enfoque

Una plataforma multi-empresa diseñada alrededor del aprovisionamiento basado en plantillas. El núcleo es una base de código compartida — backend FastAPI, panel administrativo Next.js (Pages Router) y un frontend público Next.js separado (App Router) — que genera instancias aisladas por institución.

Cuando se incorpora una nueva empresa, un script de una línea (bin/spawn_company.sh) genera toda la configuración desde plantillas:
1. Se produce un stack de docker-compose templando nombres de servicios, puertos y nombres de contenedores — base de datos CouchDB, backend FastAPI, panel administrativo y API pública, cada uno en su propio rango de puertos (base + 0/1/2/3).

2. Un gateway Nginx enruta el tráfico por prefijo de ruta — /{company}/dashboard, /{company}/api, /{company}/fastapi — hacia el contenedor correcto.

3. La empresa obtiene su propia configuración .env, su propia semilla de base de datos CouchDB, su propio directorio de uploads, su propio directorio de imágenes para la marca y una entrada en el registro central companies.json.

La experiencia del estudiante: explorar un catálogo de cursos con filtros de fecha y modalidad (presencial o virtual), ver los detalles del curso incluyendo espacios ocupados y disponibles, matricularse mediante un formulario de varias secciones protegido por reCAPTCHA v3 y recibir confirmación a través de un flujo de doble opt-in. Cuando un curso está lleno, las nuevas matrículas se unen automáticamente a una lista de espera.

La experiencia del administrador: carga de documentos con arrastrar y soltar (PDFs de consentimiento informado) con verificación en un clic, verificación de matrículas por lotes, generación masiva de PDFs de consentimiento vía ReportLab/PyMuPDF, exportaciones a Excel vía openpyxl, gestión de usuarios con control de acceso basado en roles vía NextAuth, y estadísticas y gráficos por empresa en un panel MUI v6 con data grids.

Detrás de escena: FastAPI maneja el CRUD de cursos, el procesamiento de matrículas (con asignación automática a lista de espera cuando se llenan los espacios), la generación de PDFs de consentimiento, la autenticación de usuarios y la gestión de archivos. CouchDB provee almacenamiento de documentos sin esquema por empresa. Cada empresa corre como cuatro contenedores aislados en su propia red de Docker, con el gateway en una red externa compartida.

El resultado

Dos instituciones — Zona Franca Coyol y Evolution Free Zone — corren hoy sobre una sola base de código, cada una en stacks completamente aislados (CouchDB + FastAPI + panel administrativo + API pública). Cada una gestiona sus propios cursos, matrículas y usuarios de forma independiente; ningún dato cruza entre ellas.

La plataforma acumula 465 commits a lo largo de aproximadamente 17 meses de iteración y ~23,000 líneas de código fuente en producción (Python + TypeScript/React, excluyendo dependencias vendor). Agregar una nueva institución ya no significa un nuevo proyecto de desarrollo — significa generar configuración desde plantillas y correr docker compose up --build. El cuello de botella se movió de «reinventar para cada cliente» a «aprovisionar y desplegar», que es lo que hace defendible la arquitectura a medida que un negocio de servicios escala.

El panel administrativo reemplazó lo que habría sido una mezcla de hojas de cálculo, correo electrónico y formularios de consentimiento en papel con un flujo de trabajo digital unificado — creación de cursos, gestión de matrículas, recopilación de documentos y reportería en un solo lugar, con la lógica de lista de espera aplicada en el backend para que nadie sobrevenda accidentalmente una clase llena.

Conclusión clave

Multi-tenant no tiene que significar datos compartidos y compromisos. El aislamiento basado en plantillas significa que cada cliente obtiene su propia infraestructura — sin reconstruir la plataforma cada vez. Una arquitectura, un comando para aprovisionar, tantas instancias aisladas como el mercado exija. Así se escala un negocio de servicios sin escalar el equipo de ingeniería.

¿Listo para construir su plataforma?

Una llamada de 30 minutos para ver si somos el aliado correcto. Sin discurso de venta. Sin presión. Solo una conversación sobre lo que necesita construir.

La mayoría de los proyectos inicia con un diagnóstico de arquitectura acotado: de $5,000 a $12,000, de 1 a 3 semanas. Construcción de plataformas a precio fijo: de $20,000 a $80,000, con control por hitos, 50% de depósito. CTO fraccional: de $6,000 a $10,000 por mes, mínimo 90 días.

Plataforma de Cursos — Sistema de Matrícula y Gestión Multi-Empresa — LogicBison