Saltar al contenido principal

Arquitectura y proyectos

Visión técnica de los tres proyectos y cómo se relacionan.

Proyectos

my-academy-web/
├── academy-manager-api/ # Backend REST (Express, Prisma, SQLite)
├── academy-manager-web/ # Web de academias (Next.js 15)
├── academy-manager-admin/ # Admin de plataforma (Next.js 15)
└── docs-site/ # Esta documentación (Docusaurus)

API (academy-manager-api)

  • Stack: Express, TypeScript, Prisma (SQLite por defecto).
  • Multi-tenant: modelo Academy; User, Student, Payment, PromoCode, Post, Sponsor tienen academyId. El JWT de usuarios de academia incluye academy_id; todas las consultas se filtran por esa academia.
  • Rutas:
    • Auth: /api/auth/login, /api/auth/logout, /api/auth/me (cookie auth_token).
    • Academia: students, payments, reports, becas, dashboard, public (posts/sponsors con ?academy=slug), preregistro (body con academy_slug).
    • Plataforma: /api/platform/login, /api/platform/academies, /api/platform/plans (cookie platform_auth, JWT con scope platform).

Web de academias (academy-manager-web)

  • Stack: Next.js 15 (App Router), TypeScript, Tailwind.
  • Auth: cookie auth_token; middleware protege rutas de dashboard. Con NEXT_PUBLIC_API_URL se usa la API; si no, mocks en el cliente.
  • Rutas: landing, login, pre-registro (públicas); dashboard, estudiantes, pagos, reportes, becas, público (protegidas).

Admin (academy-manager-admin)

  • Stack: Next.js 15, TypeScript, Tailwind.
  • Auth: cookie platform_auth; middleware protege dashboard, academies y plans.
  • Comunicación: todas las peticiones a NEXT_PUBLIC_API_URL con credentials: 'include' para enviar la cookie.

Base de datos (Prisma)

Modelos principales: Academy, User, Student, Payment, PromoCode, Post, Sponsor, Plan, PlatformUser, DisciplinePrice. Las entidades de negocio (excepto PlatformUser y Plan) están asociadas a una academia.

Despliegue

  • API: exponer en un dominio/puerto; configurar CORS_ORIGIN con los orígenes de la web y del admin.
  • Web y admin: builds estáticos o SSR según necesidad; configurar NEXT_PUBLIC_API_URL con la URL pública de la API.
  • Docs: build de Docusaurus (npm run build en docs-site) y publicar en hosting estático o GitHub Pages.