Skip to content
/ PyKedex Public

¿Eres fan de Pokémon y la programación? PyKedex es tu herramienta definitiva para explorar datos de Pokémon con Python. Consulta estadísticas, habilidades, tipos y más...

License

Notifications You must be signed in to change notification settings

ROM3Z/PyKedex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyKedex - API Pokémon con FastAPI 🚀

FastAPI Python PostgreSQL JWT

API REST inspirada en Pokémon construida con FastAPI, PostgreSQL y autenticación JWT. Desarrollado como proyecto educativo para el curso PyKedex de DruidCode.

Características ✨

  • 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

Mejoras Recientes 🚀

Sistema de Batallas

  • 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

Base de Datos

  • 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

Seguridad

  • Middleware reforzado: Protección adicional para endpoints
  • Manejo de errores: Respuestas estructuradas para excepciones
  • OpenAPI actualizado: Documentación de seguridad mejorada

Estructura del Proyecto 📂

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

Instalación ⚙️

  1. Clona el repositorio:
git clone https://github.com/tuusuario/pykedex-api.git
cd pykedex-api
  1. Instala las dependencias:
pip install -r requirements.txt
  1. 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
  1. (Opcional) Crea las tablas:
python app/create_tables.py
  1. Ejecuta la aplicación:
uvicorn app.main:app --reload

Documentación de la API 📚

Una vez en funcionamiento, accede a la documentación interactiva:

Ejemplo de Batalla Mejorada ⚔️

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

Contribuciones 🤝

¡Las contribuciones son bienvenidas! Abre un issue o envía un pull request.

Licencia 📜

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

About

¿Eres fan de Pokémon y la programación? PyKedex es tu herramienta definitiva para explorar datos de Pokémon con Python. Consulta estadísticas, habilidades, tipos y más...

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages