$ cat ~/projects/erudia/README.md

Erudia

★ Destacado

SaaS de gestión escolar K-12

Un solo backend, miles de colegios. SaaS escolar multi-tenant de extremo a extremo.

Estado
En desarrollo
Rol
Arquitecto & Full-Stack Lead
Periodo
2024 — 2025
Cliente
Colegio Santa Rita (Chosica) — cliente ancla
1
instancia para N colegios
4
módulos de dominio
<5min
onboarding por colegio

# Resumen

Erudia es una plataforma SaaS multi-tenant que digitaliza la operación completa de un colegio K-12. Cada escuela vive en su propio subdominio (colegio.erudia.app) con datos aislados lógicamente sobre una única base PostgreSQL, lo que permite operar cientos de instituciones desde una sola instancia con costos marginales mínimos. El backend es un modular monolith en NestJS con Clean Architecture, y el frontend un panel Angular 20 con PrimeNG. Cubre asistencia con QR y reconocimiento por foto, libreta de notas, tesorería con facturación electrónica SUNAT y aula virtual.

! El problema

Los colegios medianos en Perú gestionan asistencia, notas y cobranzas con cuadernos, Excel y WhatsApp. No hay trazabilidad, las matrículas se pierden y la cobranza es manual. Las soluciones existentes son caras, monolíticas y requieren un servidor por colegio.

La solución

Un SaaS multi-tenant donde alta de un colegio = un registro + un subdominio, sin desplegar infraestructura nueva. Aislamiento por tenant en cada query, JWT que transporta el tenant, y módulos desacoplados que se activan por plan. Onboarding de un colegio en minutos, no semanas.

# Características

Asistencia QR + foto

Marcado por código QR del alumno y verificación opcional por foto; notificación al apoderado en tiempo real.

Libreta de notas

Períodos, competencias y promedios configurables por nivel; exportación a PDF oficial.

Tesorería + SUNAT

Estados de cuenta por alumno, pagos y facturación electrónica integrada con SUNAT.

Aula virtual

Tareas, materiales y comunicación docente-apoderado en un solo lugar.

Multi-tenant por subdominio

Resolución de tenant por host, aislamiento de datos y branding por colegio.

Colas con BullMQ

Notificaciones, generación de PDFs y envíos a SUNAT procesados de forma asíncrona y resiliente.

# Arquitectura

Modular monolith en NestJS con Clean Architecture: cada módulo de dominio (Matrícula, Asistencia, Notas, Tesorería) expone casos de uso y oculta su persistencia. Una capa transversal propaga el tenant a lo largo de cada request y garantiza que toda consulta quede acotada a su colegio, sin que cada caso de uso tenga que recordarlo. El trabajo pesado (PDFs, notificaciones, facturación) se procesa de forma asíncrona mediante colas.

Componentes
01 Angular 20 + PrimeNG SPA del panel administrativo y docente
02 NestJS API Modular monolith, REST + JWT multi-tenant
03 PostgreSQL 16 + pgvector Datos relacionales y búsqueda semántica
04 Redis + BullMQ Colas: notificaciones, PDFs, SUNAT
05 Docker + Traefik Routing por subdominio y TLS automático

# Stack técnico

Frontend
Angular 20PrimeNG 18RxJSSignals
Backend
NestJSTypeScriptClean ArchitectureJWT
Datos
PostgreSQL 16pgvectorRedisBullMQ
Infra
DockerTraefikWatchtowerCI/CD
TypeScript 78%
SQL 14%
Otros 8%

# Aprendizajes

  • El aislamiento por tenant debe vivir en una capa transversal (interceptor/middleware), nunca en cada caso de uso: un solo punto de fallo controlado.
  • Un modular monolith bien delimitado da el 90% de los beneficios de microservicios con el 10% de la complejidad operativa.
  • Las colas no son un lujo: facturación SUNAT y notificaciones fuera del request son la diferencia entre una UI fluida y timeouts.

# Roadmap

App móvil para apoderados (asistencia y notas)
Reportes con IA sobre rendimiento por aula
Marketplace de plantillas de evaluación

¿Te sirve para tu negocio?

Esta solución se puede adaptar a tu organización. Comparte el proyecto o escríbeme para conversarlo.

Conversemos →