API REST inspirada en Pokémon construida con FastAPI, PostgreSQL y autenticación JWT. Desarrollado como proyecto educativo para el curso PyKedex de DruidCode.
- Operaciones CRUD completas para Pokémon, Entrenadores y Batallas
- Autenticación JWT con roles de admin/superadmin
- Sistema de batallas por turnos avanzado con:
- Cálculo de daño 4x/0.25x para múltiples debilidades/resistencias
- Selección inteligente de Pokémon basada en ventajas de tipo y estadísticas
- Gestión de Pokémon derrotados (no pueden volver a combatir)
- Operaciones asíncronas con SQLAlchemy y PostgreSQL
- Documentación automática con Swagger UI y ReDoc
- Preparado para producción con seguridad y validaciones
- Daño 4x/0.25x: Cálculo preciso de múltiples debilidades/resistencias
- Selección inteligente: Los entrenadores eligen Pokémon estratégicamente
- Diálogos mejorados: Mensajes especiales para combates extremos
- MVP: Identificación del Pokémon más valioso en cada batalla
- Gestión asíncrona mejorada: Creación y verificación de tablas
- Pool de conexiones optimizado: Mejor manejo de conexiones concurrentes
- Sesiones mejoradas: Limpieza automática de recursos
- Middleware reforzado: Protección adicional para endpoints
- Manejo de errores: Respuestas estructuradas para excepciones
- OpenAPI actualizado: Documentación de seguridad mejorada
app/
├── routers/
│ ├── admin.py # Endpoints de administración
│ ├── auth.py # Autenticación JWT
│ ├── battle.py # Lógica avanzada de batallas
│ ├── pokemon.py # Endpoints de Pokémon
│ └── trainer.py # Endpoints de Entrenadores
├── crud.py # Operaciones de base de datos
├── database.py # Configuración mejorada de DB
├── create_tables.py # Script para gestión de tablas
├── initial_data.py # Cargador de datos iniciales
├── main.py # Aplicación principal mejorada
├── models.py # Modelos SQLAlchemy
└── schemas.py # Esquemas Pydantic
- Clona el repositorio:
git clone https://github.com/tuusuario/pykedex-api.git
cd pykedex-api- Instala las dependencias:
pip install -r requirements.txt- Configura las variables de entorno en
.env:
DATABASE_URL=postgresql+asyncpg://usuario:contraseña@localhost:5432/pykedex
SECRET_KEY=tu-clave-secreta-aqui
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30- (Opcional) Crea las tablas:
python app/create_tables.py- Ejecuta la aplicación:
uvicorn app.main:app --reloadUna vez en funcionamiento, accede a la documentación interactiva:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
POST /battles
Authorization: Bearer <tu-token>
Content-Type: application/json
{
"trainer_id": 1,
"opponent_id": 2,
"smart_selection": true # Activa selección inteligente de Pokémon
}Respuesta incluye:
- Turnos detallados con efectividad de ataques (x4, x2, x0.5, x0.25)
- MVP de la batalla (Pokémon más valioso)
- Pokémon derrotados que no podrán volver a combatir
¡Las contribuciones son bienvenidas! Abre un issue o envía un pull request.
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
Desarrollado por Isaac Rodríguez ROMEZ
Para el Curso PyKedex de DruidCode
"¡Los combates Pokémon ahora son más estratégicos que nunca!"