Uma API RESTful desenvolvida com Django REST Framework, projetada para fornecer informações sobre jogos de forma escalável, moderna e inteligente. O projeto vai além do CRUD tradicional, incorporando integração com IA para geração automática de sinopses, endpoint de estatísticas avançadas, e autenticação JWT completa. Além disso, segue boas práticas de código e padronização de estilo com o uso do linter Flake8 (seguindo a pep8), garantindo qualidade, legibilidade e manutenibilidade do código.
- ✅ CRUD completo para gerenciamento de jogos
- 🧠 Integração com IA para geração automática de sinopses de jogos
- ⚙️ Django Signals para persistência e atualização automatizada das sinopses no banco de dados
- 🔄 Serializers dinâmicos, permitindo respostas otimizadas conforme o contexto da requisição
- 🧩 URLs preparadas para versionamento da API (
/api/v1/,/api/v2/, ...) - 📊 Endpoint de estatísticas com informações agregadas sobre os jogos cadastrados
- 🔐 Autenticação e autorização via JWT (JSON Web Tokens)
- Python 3.11+
- Django 5+
- Django REST Framework
- SimpleJWT
- OpenAI / IA API (para geração das sinopses)
- Banco de dados (SQLite)
git clone https://github.com/dmdlgg/games_api.git
cd games_apipython -m venv venv
source venv/bin/activate # Linux / Mac
venv\Scripts\activate # Windowspip install -r requirements.txt
pip install -r requirements_dev.txt 4️⃣ Configure variáveis de ambiente Crie um arquivo .env na raiz do projeto e adicione:
OPENAI_API_KEY = sua_chave_de_apipython manage.py migratepython manage.py runserver- Para obter o token, basta fazer um POST com o usuário e senha no endpoint /api/v1/autenticacao/token/
Inclua o o token JWT nos headers para acessar os endpoints protegidos
{ "username": "seu_usuario", "password": "sua_senha" }
- A cada novo jogo cadastrado, o sistema envia o nome e o diretor do jogo para a API da OpenAI, que gera automaticamente uma sinopse personalizada. Essa sinopse é então salva no banco de dados através de um Django Signal, garantindo persistência automática e desacoplada da lógica principal.
-> Usuário cadastra um novo jogo (POST /api/v1/jogos/)
-> O Django Signal detecta a criação do registro
-> Se o campo de sinopse estiver vazio, o a API da OpenAI é chamada passando os dados do jogo
-> A sinopse é gerada e salva automaticamente no banco
| Método | Endpoint | Descrição |
|---|---|---|
GET |
/api/v1/jogos/ |
Lista todos os jogos |
POST |
/api/v1/jogos/ |
Cria um novo jogo |
GET |
/api/v1/jogos/<id>/ |
Detalhes de um jogo |
PUT/PATCH |
/api/v1/jogos/<id>/ |
Atualiza um jogo |
DELETE |
/api/v1/jogos/<id>/ |
Remove um jogo |
GET |
/api/v1/stats/ |
Retorna estatísticas sobre os jogos |
Fique à vontade para entrar em contato caso tenha dúvidas, sugestões ou queira contribuir:
- 📨 Email: dumedolago@gmail.com
- 💻 Linkedin: Eduardo Medolago