Backend de LANEDU Labs construido con FastAPI, PostgreSQL y Docker Compose. Incluye modelos, migraciones con Alembic, esquemas Pydantic, servicios y routers básicos (auth MVP, usuarios, labs, progreso y ranking).
- Docker y Docker Compose
- Opcional: Python 3.11+ y pip (para correr comandos locales)
docker compose up --buildLa API quedará disponible en http://localhost:8000.
- Aplicar todas las migraciones:
docker compose run --rm api alembic upgrade head
- Generar una nueva migración (autogenerate):
docker compose run --rm api alembic revision --autogenerate -m "descripcion_corta"
docker compose exec api python -m app.db.seed_labs(El script es idempotente: no duplica labs si ya existen.)
POST /auth/register– crear usuarioPOST /auth/login– login simple por username (token simulado)GET /users/me– perfil del usuario autenticado (auth fake)GET /labs– lista labs con estadoGET /labs/{lab_id}– detalle de un labPOST /progress/complete– completar un lab (requierelab_idydoc_url)GET /ranking– top usuarios por XPGET /health– health check
- Registro de usuario
curl -X POST http://localhost:8000/auth/register \
-H "Content-Type: application/json" \
-d '{"username":"alice","email":"alice@example.com"}'- Login (token simulado)
curl -X POST 'http://localhost:8000/auth/login?username=alice'- Perfil
/users/me(usa auth fake: siempre usuario 1)
curl http://localhost:8000/users/me- Listar labs
curl http://localhost:8000/labs- Detalle de un lab
curl http://localhost:8000/labs/1- Completar lab (requiere
lab_idydoc_url)
curl -X POST http://localhost:8000/progress/complete \
-H "Content-Type: application/json" \
-d '{"lab_id":1,"doc_url":"https://example.com/entrega"}'- Ranking
curl http://localhost:8000/rankingNota: la autenticación es un MVP; los endpoints usan dependencias fake que devuelven siempre el mismo usuario. Sustituir por JWT/OAuth2 en producción.