{"id":26578011,"url":"https://github.com/juliorom/pokemon-api-flask","last_synced_at":"2026-04-17T07:32:58.215Z","repository":{"id":283906449,"uuid":"951495052","full_name":"JulioRom/pokemon-api-flask","owner":"JulioRom","description":"Este proyecto es una API en Flask para gestionar Pokémon, sus tipos y usuarios con favoritos. Incluye una interfaz admin, endpoints REST y scripts de carga inicial de datos.","archived":false,"fork":false,"pushed_at":"2025-03-22T23:19:31.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-23T00:20:22.736Z","etag":null,"topics":["flask","flask-admin","flask-bcrypt","flask-login","flask-migrate","flask-sqlalchemy","flask-wtf","flask-wtforms","pipenv","python3","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JulioRom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-19T19:11:23.000Z","updated_at":"2025-03-22T23:23:40.000Z","dependencies_parsed_at":"2025-03-23T00:32:49.373Z","dependency_job_id":null,"html_url":"https://github.com/JulioRom/pokemon-api-flask","commit_stats":null,"previous_names":["juliorom/pokemon-api-flask"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulioRom%2Fpokemon-api-flask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulioRom%2Fpokemon-api-flask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulioRom%2Fpokemon-api-flask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JulioRom%2Fpokemon-api-flask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JulioRom","download_url":"https://codeload.github.com/JulioRom/pokemon-api-flask/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245052963,"owners_count":20553233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","flask-admin","flask-bcrypt","flask-login","flask-migrate","flask-sqlalchemy","flask-wtf","flask-wtforms","pipenv","python3","sqlite"],"created_at":"2025-03-23T04:18:24.920Z","updated_at":"2026-04-17T07:32:58.171Z","avatar_url":"https://github.com/JulioRom.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧬 Pokémon API - Flask + Flask-Admin\n\nEste proyecto es una API REST y panel de administración para gestionar usuarios, pokémon, tipos y favoritos. Construida con **Flask**, utiliza **Flask-Admin** para una interfaz web de administración, **SQLAlchemy** para el ORM y **WTForms** para formularios.\n\n---\n\n## 🧾 Descripción General\n\n- Administra usuarios con autenticación (hash de contraseña).\n- Administra pokémon, asociados a un tipo (por ejemplo: Fuego, Agua...).\n- Consulta y gestión de tipos de pokémon.\n- Asociación de usuarios con múltiples pokémon favoritos.\n- CRUD completo por endpoints REST y panel Flask-Admin.\n\n---\n\n## 🗃️ Estructura de Carpetas\n\n```\npokemon-api-flask/\n│\n├── src/\n│   ├── app.py              # Punto de entrada principal de la app Flask\n│   ├── config.py           # Configuraciones generales (base de datos, claves)\n│   ├── database.py         # Inicialización de la base de datos con SQLAlchemy\n│   ├── models.py           # Definición de modelos y clases de Flask-Admin\n│   ├── routes.py           # Endpoints REST\n│   ├── seeder.py           # Carga inicial de datos (admin y tipos)\n│   └── pokemon_seeder.py   # Inserta Pokémon por defecto\n├── Pipfile                 # Declaración de dependencias\n├── Pipfile.lock\n├── reset-env.bat          # Script para eliminar entorno virtual y reinstalar\n├── README.md              # Este archivo 📘\n```\n\n---\n\n## ⚙️ Dependencias Principales\n\n- **Flask**: Framework web principal.\n- **Flask-Admin**: Interfaz web de administración.\n- **Flask-SQLAlchemy**: ORM para la base de datos.\n- **Flask-Migrate**: Manejo de migraciones con Alembic.\n- **Flask-Bcrypt**: Hash seguro para contraseñas.\n- **Flask-WTF / WTForms**: Validación de formularios.\n- **Flask-CORS**: Soporte para CORS.\n- **python-dotenv**: Carga de variables desde `.env`.\n\n\u003e 📌 Se fijó la versión de `wtforms` a `3.1.2` debido a incompatibilidades con `flask-admin`.\n\n---\n\n## 📜 Scripts especiales (definidos en `Pipfile`)\n\n```toml\n[scripts]\nseed = \"python src/seeder.py\"\nseed-pokemon = \"python src/pokemon_seeder.py\"\nreset-env = \"reset-env.bat\"\n```\n\n### 🧪 Ejecutarlos con:\n\n```bash\npipenv run seed         # Inserta admin + tipos base\npipenv run seed-pokemon # Inserta pokémon de prueba\npipenv run reset-env    # Elimina entorno actual y crea uno nuevo\n```\n\n---\n\n## 🔁 Script especial: `reset-env.bat`\n\nEste archivo automatiza el proceso de reinicio completo del entorno virtual:\n\n```bat\n@echo off\necho 🧹 Eliminando entorno virtual actual...\npipenv --rm\n\necho 📦 Instalando dependencias desde Pipfile...\npipenv install\n\necho ✅ Entorno limpio y listo!\n```\n\n---\n\n## 🧪 Seeder principal: `src/seeder.py`\n\nEste script:\n\n- Crea un usuario admin con contraseña (`admin:admin123`).\n- Inserta los **18 tipos** de Pokémon oficiales:\n  - Agua, Fuego, Planta, Veneno, Fantasma, etc.\n\n---\n\n## 🧪 Seeder Pokémon: `src/pokemon_seeder.py`\n\nInserta un conjunto de pokémon ficticios relacionados a tipos predefinidos. Útil para pruebas iniciales.\n\n---\n\n## 📮 Endpoints REST\n\n| Método | Ruta                            | Descripción                      |\n|--------|----------------------------------|----------------------------------|\n| GET    | `/users`                        | Lista todos los usuarios         |\n| POST   | `/users`                        | Crea un nuevo usuario            |\n| DELETE | `/users/\u003cid\u003e`                  | Elimina un usuario               |\n| GET    | `/pokemons`                     | Lista todos los pokémon          |\n| POST   | `/pokemons`                     | Crea un nuevo pokémon            |\n| DELETE | `/pokemons/\u003cid\u003e`               | Elimina un pokémon               |\n| GET    | `/types`                        | Lista tipos disponibles          |\n| GET    | `/users/\u003cid\u003e/favorites`        | Lista favoritos de un usuario    |\n| POST   | `/users/\u003cid\u003e/favorites`        | Agrega un pokémon a favoritos    |\n| DELETE | `/users/\u003cid\u003e/favorites/\u003cfid\u003e`  | Elimina un favorito              |\n\n---\n\n## 🧑‍💻 Panel Flask-Admin\n\nDisponible en: [http://localhost:3000/admin](http://localhost:3000/admin)\n\n- `User`: Administra usuarios (crear, editar, eliminar).\n- `Pokemon`: Crear pokémon y asignarles tipo desde un combo box.\n- `Type`: Solo lectura. Tipos cargados desde el seeder.\n- `Favorite`: Asociación entre usuario y pokémon.\n\n---\n\n## 🧪 Cómo correr el proyecto desde cero\n\n```bash\ngit clone \u003crepo\u003e\ncd pokemon-api-flask\n\n# Opcional: limpiar entorno si ya existía\npipenv run reset-env\n\n# Activar entorno y cargar dependencias\npipenv shell\npipenv install\n\n# Migrar DB y cargar datos\nflask db upgrade\npipenv run seed\npipenv run seed-pokemon\n\n# Ejecutar app\npipenv run start\n```\n\n---\n\n## 👨‍💻 **Autor**\n\n- **Desarrollado por JulioRom**\n- 📧 **Correo:** [julioandrescampos@gmail.com](mailto:julioandrescampos@gmail.com)\n- 🔗 **GitHub:** [https://github.com/JulioRom](https://github.com/JulioRom)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliorom%2Fpokemon-api-flask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliorom%2Fpokemon-api-flask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliorom%2Fpokemon-api-flask/lists"}