Autor: Willian Bardela da Silva
Este projeto implementa a solução de Backend (Python/Flask) para o desafio técnico FullStack da Kogui. O foco foi garantir a segurança, a persistência de dados e a arquitetura robusta, conforme os requisitos propostos.
O projeto está totalmente containerizado. Basta ter o Docker e o Docker Compose instalados.
-
Clone o Repositório:
git clone [https://github.com/Typezera/ProjetoPokemonAPI.git](https://github.com/Typezera/ProjetoPokemonAPI.git) cd ProjetoPokemonAPI
-
Construir e Iniciar os Contêineres: Este comando irá construir a imagem, instalar as dependências e iniciar o Flask na porta 5000.
docker-compose up --build
-
Acesso: O servidor estará acessível em
http://127.0.0.1:5000/
.
- Backend: Python 3.12 (Flask)
- Banco de Dados: SQLite (SQLAlchemy ORM)
- Segurança: JSON Web Token (JWT) para autenticação.
- Arquitetura: Camadas (Controllers, Services, Entities) para separação de responsabilidades.
Os seguintes endpoints foram implementados e estão operacionais:
Método | Endpoint | Descrição | Status |
---|---|---|---|
POST |
/api/users/register |
Cria um novo usuário. | OK |
POST |
/api/users/login |
Autentica e retorna o Token JWT. | OK |
GET |
/api/users/ |
Trás todos os usuários cadastrados no sistema. | OK |
GET |
/api/pokemons |
Lista Pokémons iniciais (via PokéAPI). | OK |
GET |
/api/pokemons/name/ |
Procura um Pokemon Pelo nome (via PokéAPI). | OK |
POST |
/api/pokemons/favorite |
Adiciona um Pokémon à lista de favoritos do usuário. | OK |
GET |
/api/pokemons/favorites |
Lista os Pokémons favoritos do usuário. | OK |
Devido à alta complexidade do mapeamento ORM (SQLAlchemy) e à urgência de conciliar o projeto com exames acadêmicos e trabalho, o tempo de estabilização final foi limitado.
- Lógica de Negócio (Lógica Correta, Execução Instável): Os endpoints para
DELETE /favorite/{id}
ePOST /battle_team
contêm a lógica de exclusão e a regra de limite de 6 Pokémons, mas falharam em runtime no teste final devido a problemas de binding com o banco de dados. A lógica para o limite está presente nos services. - Front-End: A construção do Front-End (Angular) não foi iniciada.
O foco principal foi garantir que a base, a segurança (JWT) e a persistência de dados (CRUD) estivessem sólidas.