Este projeto consiste em um parser de logs do jogo Quake 3 Arena, capaz de processar eventos de partidas e expor os dados via uma API RESTful com persistência em MongoDB (Atlas), serão exibidos através de um FrontEnd.
- Descrição do Projeto
- Funcionalidades
- Tecnologias Utilizadas
- Como Executar o Projeto
- Estrutura do Projeto
- Testes Automatizados
- Exemplos de Uso da API
O parser lê o arquivo games.log, identifica todas as partidas iniciadas (InitGame:) e encerradas, agrupando as estatísticas por jogo. Cada estatística é convertida para um modelo JSON contendo:
"game_1": {
"total_kills": 45,
"players": ["Isgalamido", "Zeh", "Dono da Bola"],
"kills": {
"Isgalamido": 18,
"Zeh": 20,
"Dono da Bola": 5
}
}- Parser robusto de logs de jogo
- Identificação de jogadores e contagem de kills
- Tratamento de mortes causadas por
<world>com penalidade de -1 - API RESTful com endpoints para consulta, detalhamento e persistência
- Persistência dos dados em banco MongoDB
- Testes automatizados com cobertura dos principais cenários
| Tecnologia | Função |
|---|---|
| Python 3.11+ | Linguagem principal |
| Flask | Framework web leve para API |
| PyMongo | Conexão com MongoDB |
| pytest | Framework de testes |
| MongoDB Atlas | Banco de dados em nuvem |
| CORS | Permite requisições de outros domínios |
| React + Vite | Estrutura leve para FrontEnd |
| React R. DOM | Navegação entre páginas |
| AXIOS | Consumo de API REST |
| Bootstrap 5 | Componentes Visuais |
- Python 3.11+
- Pip
- Ambiente virtual:
python -m venv venv - Dependências:
npm run dev
-
Clone o repositório e acesse a pasta:
git clone <https://github.com/azrael-developer/gamesLog_API.git> cd <Raiz do Projeto>
-
Instale as dependências:
pip install flask flask-cors () pip install -r requirements.txt npm install -
Execute a API:
python -m venv venv (Crie o ambiente) .\venv\Scripts\Activate.ps1 (Ativar ambiente) cd .. (Caso não estiver na RAIZ do projeto) $env:FLASK_APP="backend.app" flask run -
Execute o FrontEnd:
cd frontend npm run dev
A API estará acessível em: http://localhost:5000
O FrontEnd que consome os dados da API estará acessível em: http://localhost:5173/
Teste-Backend-Christian-Mendes/
├── backend/
│ ├── app.py
│ ├── parser.py
│ ├── games.log
│ ├── models.py
│ ├── requirements.txt
│ └── tests/
│ ├── __init__.py
│ ├── test_api.py
│ └── test_parser.py
├── frontend/
│ ├── index.html
│ ├── package.json
│ ├── package-lock.json
│ ├── vite.config.ts
│ ├── tsconfig.json
│ ├── tsconfig.app.json
│ ├── tsconfig.node.json
│ ├── vite-env.d.ts
│ ├── public/
│ │ └── vite.svg
│ └── src/
│ ├── App.tsx
│ ├── App.css
│ ├── index.css
│ ├── main.tsx
│ ├── assets/
│ │ └── react.svg
│ └── pages/
│ ├── GameDetails.tsx
│ ├── Games.tsx
│ ├── GamesDB.tsx
│ ├── Home.tsx
│ └── SaveGames.tsx
├── .gitignore
└── README.md
Rodar todos os testes:
.\venv\Scripts\Activate.ps1 (Ativar ambiente caso não tenha ativado)
cd .. (Raiz do Projeto)
$env:PYTHONPATH="."
pytest backend/testsArquivos de teste:
test_parser.py: cobre lógica de parsing, contagem de kills, jogadores e regras do<world>test_api.py: cobre todos os endpoints (/games,/games/<id>,/games/save,/games/db)
-
Listar todas as partidas
GET /games -
Buscar jogo específico
GET /games/1 -
Salvar estatísticas no MongoDB
POST /games/save -
Consultar dados do banco
GET /games/db
| Requisito | Status |
|---|---|
| Parser com contagem correta de kills e jogadores | OK |
Ignora <world> na contagem de jogadores |
OK |
Penaliza kill por <world> (-1) |
OK |
| API RESTful em JSON | OK |
Testes bem estruturados com pytest |
OK |
| Git estruturado e modularização | OK |
| Documentação clara e completa | OK |
| Persistência no banco MongoDB (extra) | OK |
Rota separada para o banco (/games/db) |
OK |