Resolución de problemas
La API no arranca
Error: Invalid environment / JWT_SECRET
Define en .env las variables requeridas. Mínimo: DATABASE_URL, JWT_SECRET (mín. 16 caracteres). Copia .env.example si existe.
Error al hacer db push (columnas requeridas sin valor)
Si la base ya tenía datos y añadiste modelos o columnas obligatorias, usa npx prisma db push --force-reset (borra todos los datos) y luego npm run db:seed.
Puerto 4000 en uso
Cambia PORT en .env o arranca con PORT=4001 npm run dev.
La web de academias no carga datos
Todo funciona en mock pero con API no
- Comprueba
NEXT_PUBLIC_API_URLen.env.local(sin barra final). - Abre la pestaña Red del navegador: las peticiones deben ir a esa URL y devolver 200 (o el código esperado). Si hay CORS, verás el error en consola.
- Asegúrate de que
CORS_ORIGINen la API incluya la URL del frontend (ej.http://localhost:3000).
401 en todas las peticiones tras login
La cookie auth_token no se está enviando o el backend la rechaza. Revisa que:
- El login devuelve y guarda el token (o que la API setea la cookie).
- Las peticiones usan
credentials: 'include'. - El dominio/puerto del frontend está en
CORS_ORIGINy no hay restricciones de cookies por dominio.
404 en /api/...
La API está montada en API_BASE_PATH (por defecto /api). La URL base del frontend debe ser http://localhost:4000/api (o la que use tu backend), no solo http://localhost:4000.
El admin no conecta con la API
401 en /api/platform/academies
No hay cookie platform_auth o ha caducado. Vuelve a hacer login en el admin (platform@academy.com / platform123). Comprueba que el backend tenga el seed de PlatformUser.
CORS / cookie no enviada
El admin corre en un origen (ej. localhost:3001). Añade ese origen a CORS_ORIGIN en el backend (ej. http://localhost:3000,http://localhost:3001). Las peticiones deben ser con credentials: 'include'.
404 en /api/platform/...
Verifica que la API tenga montadas las rutas de platform (/api/platform/login, /api/platform/academies, etc.). Revisa app.ts y que el build del backend sea reciente.
Base de datos y seed
Seed falla: unique constraint / registro duplicado
En SQLite, algunos upsert dependen de claves únicas. Revisa que el slug (academy, plan) o el email (user, platformUser) no estén duplicados. Si es la primera vez, db push --force-reset y vuelve a ejecutar el seed.
No aparecen academias en el admin
Ejecuta el seed: cd academy-manager-api && npm run db:seed. Crea la academia default y el usuario platform.
Build y despliegue
Next.js: error de tipos en build
Ejecuta npm run typecheck en el proyecto afectado. Corrige los tipos que marque (imports, DTOs, etc.).
Docusaurus: enlaces rotos
Los enlaces internos deben ser relativos al baseUrl. Si desplegaste en un subpath (ej. /docs/), configura baseUrl en docusaurus.config.ts.
La documentación no se actualiza
Tras cambiar archivos en docs/, vuelve a ejecutar npm run build en docs-site. Si usas npm start, el hot reload debería reflejar cambios en markdown.