Skip to content

cristianL0pez/LANEDU-Labs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 

Repository files navigation

LANEDU Labs Backend

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).

Requisitos

  • Docker y Docker Compose
  • Opcional: Python 3.11+ y pip (para correr comandos locales)

Puesta en marcha rápida

docker compose up --build

La API quedará disponible en http://localhost:8000.

Migraciones con Alembic

  • 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"

Seed de labs iniciales

docker compose exec api python -m app.db.seed_labs

(El script es idempotente: no duplica labs si ya existen.)

Endpoints principales (MVP)

  • POST /auth/register – crear usuario
  • POST /auth/login – login simple por username (token simulado)
  • GET /users/me – perfil del usuario autenticado (auth fake)
  • GET /labs – lista labs con estado
  • GET /labs/{lab_id} – detalle de un lab
  • POST /progress/complete – completar un lab (requiere lab_id y doc_url)
  • GET /ranking – top usuarios por XP
  • GET /health – health check

Checklist de pruebas manuales (curl/Postman)

  1. Registro de usuario
curl -X POST http://localhost:8000/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username":"alice","email":"alice@example.com"}'
  1. Login (token simulado)
curl -X POST 'http://localhost:8000/auth/login?username=alice'
  1. Perfil /users/me (usa auth fake: siempre usuario 1)
curl http://localhost:8000/users/me
  1. Listar labs
curl http://localhost:8000/labs
  1. Detalle de un lab
curl http://localhost:8000/labs/1
  1. Completar lab (requiere lab_id y doc_url)
curl -X POST http://localhost:8000/progress/complete \
  -H "Content-Type: application/json" \
  -d '{"lab_id":1,"doc_url":"https://example.com/entrega"}'
  1. Ranking
curl http://localhost:8000/ranking

Nota: la autenticación es un MVP; los endpoints usan dependencias fake que devuelven siempre el mismo usuario. Sustituir por JWT/OAuth2 en producción.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors