To install dependencies:
bun installTo start a development server:
bun devTo run for production:
bun startThis project was created using bun init in bun v1.2.10. Bun is a fast all-in-one JavaScript runtime.
catalogo_estatus_cursos, debera tener:
| id | estatus |
|---|---|
| 1 | Sin iniciar |
| 2 | En curso |
| 3 | Aprobado |
| 4 | Reprobado |
, asegúrate de tener:
| id | estatus |
|---|---|
| 1 | Sin iniciar |
| 2 | En curso |
| 3 | Aprobado |
| 4 | Reprobado |
POST /api/auth/login — Iniciar sesión (genera JWT con rol)
POST /api/auth/logout — Cerrar sesión
GET /api/auth/user — Obtener datos del usuario autenticad
GET /api/roles — Listar todos los roles (admin, instructor, alumno)
POST /api/roles — Crear un nuevo rol
PUT /api/usuarios/{id_usuario}/rol — Asignar o cambiar rol de un usuario
GET /api/usuarios — (Opcional) Listar usuarios
GET /api/usuarios/{id_usuario} — (Opcional) Obtener detalle de un usuario
Protegido: solo usuarios con rol admin.
GET /api/catalogos/departamentos
GET /api/catalogos/categorias
GET /api/catalogos/empresas
GET /api/catalogos/tipo-preguntas
GET /api/catalogos/tipo-cuestionarios
GET /api/cursos
GET /api/cursos/{id}
POST /api/cursos
PUT /api/cursos/{id}
DELETE /api/cursos/{id}
GET /api/cursos/departamento/{id_departamento}
GET /api/cursos/categoria/{id_categoria}
GET /api/cursos/empresa/{id_empresa}
GET /api/inscripciones
GET /api/inscripciones/usuario/{id_usuario}
GET /api/inscripciones/curso/{id_curso}
POST /api/inscripciones — Inscribirme en un curso (rol alumno)
PUT /api/inscripciones/{id_inscripcion} — Actualizar estado (solo ciertos flujos)
POST /api/admin/inscripciones
• Crea la inscripción con { id_usuario, id_curso }
• Fija id_estatus_curso = “Sin iniciar” y intentos = 0
PUT /api/admin/inscripciones/{id_inscripcion}/reset
• Fuerza id_estatus_curso = “Sin iniciar” y (opc.) intentos = 0
Protegido: solo rol admin.
GET /api/examenes/preguntas/curso/{id_curso}/tipo/{id_tipo}
POST /api/examenes/respuestas
GET /api/examenes/resultados/usuario/{id_usuario}/curso/{id_curso}
POST /api/inscripciones/{id_inscripcion}/evaluar
• Body: { calificacion }
• Lógica: actualiza estatus “Aprobado” o incrementa intentos + resetea a “Sin iniciar” si reprueba
GET /api/cuestionarios/preguntas/tipo/{id_tipo}
GET /api/cuestionarios/preguntas/curso/{id_curso}/tipo/{id_tipo}
POST /api/cuestionarios/respuestas
GET /api/comentarios/curso/{id_curso}
GET /api/comentarios/usuario/{id_usuario}
POST /api/comentarios
GET /api/auditoria/curso/{id_curso}
GET /api/auditoria/curso/{id_curso}/usuario/{id_usuario}
GET /api/auditoria/examenes/curso/{id_curso}/usuario/{id_usuario}
GET /api/auditoria/cuestionarios/curso/{id_curso}/usuario/{id_usuario}
GET /api/auditoria/usuarios-completados/curso/{id_curso}
GET /api/estadisticas/curso/{id_curso}
GET /api/estadisticas/instructor/{id_instructor}
GET /api/reportes/curso/{id_curso}