Este proyecto es una API REST construida con FastAPI, SQLAlchemy, autenticación JWT (access
y refresh tokens
), y generación automática de descripciones con IA (OpenRouter). Incluye pruebas asincrónicas con pytest
y httpx
.
- ✅ Registro y login de usuarios
- 🔐 Autenticación JWT con tokens de acceso y actualización
- 📋 CRUD de tareas por usuario autenticado
- 🧠 Generación automática de descripciones usando IA (OpenRouter API)
- 🧪 Pruebas automatizadas asincrónicas
- 🧰 Helpers reutilizables para lógica de negocio
- 🧼 Manejo centralizado de excepciones
project_api/
│
├── app/
│ ├── core/ # Configuración, seguridad y excepciones
│ ├── db/ # Base de datos y conexión
│ ├── helpers/ # Lógica reutilizable (helpers)
│ ├── middleware/ # Middleware para JWT
│ ├── models/ # Modelos de SQLAlchemy
│ ├── routes/ # Endpoints de la API (auth, tasks)
│ ├── schemas/ # Esquemas con Pydantic
│ ├── services/ # Integraciones externas (OpenRouter)
│ └── main.py # Punto de entrada de la app
- Python 3.11+
- Pipenv
DATABASE_URL=postgresql+asyncpg://usuario:contraseña@localhost:5432/mi_base
SECRET_KEY=tu_clave_secreta
BACKEND_CORS_ORIGINS=http://localhost:5173
OPENROUTER_API_KEY=tu_api_key_openrouter
OPENROUTER_MODEL=tu_model_seleccionado
DATABASE_URL=postgresql+asyncpg://usuario:contraseña@localhost:5432/mi_base_test
SECRET_KEY=clave_secreta_test
BACKEND_CORS_ORIGINS=http://localhost:5173
OPENROUTER_API_KEY=tu_api_key_openrouter
OPENROUTER_MODEL=tu_model_seleccionado
pipenv install --dev
pipenv run uvicorn app.main:app --reload
pipenv run test
POST /auth/register
– Registro de usuarioPOST /auth/login
– Login y obtención de tokensPOST /auth/refresh
– Generar nuevo token de acceso
Todas las rutas requieren autenticación:
POST /tasks/
– Crear nueva tarea (con descripción generada por IA)GET /tasks/
– Obtener todas las tareas del usuarioGET /tasks/{task_id}/
– Obtener una tarea específicaPOST /tasks/{task_id}/
– Regenerar descripciónDELETE /tasks/{task_id}/
– Eliminar tarea
Aquí puedes ver una vista previa del panel Swagger generado automáticamente por FastAPI:
La API se conecta con OpenRouter para generar descripciones automáticas a partir del título de la tarea. Asegúrate de tener una API key
válida en tus variables de entorno.
Víctor García – @vicogarcia16