Aplicação Django para descobrir jogos: ver os mais avaliados do mês, buscar por título, filtrar por gênero, avaliar, comentar e manter uma lista pessoal de jogos jogados.
🌐 Em produção: https://game-ranking-app-ehfhd4gnhvgtatfq.brazilsouth-01.azurewebsites.net/
- O que o site faz
- Estrutura das páginas
- Como rodar localmente
- Testes
- Deploy (Azure)
- Integrantes
- Histórico de entregas
- Página inicial com top 3 do mês, 10 jogos aleatórios e gêneros clicáveis
- Top 20 do mês em página dedicada, com fallback para ranking geral quando o mês ainda não tem avaliações
- Busca de jogos por título
- Página de detalhes com sinopse, trailer embutido, capa com fallback, gêneros e site oficial
- Cadastro, login e logout, com bloqueio de e-mails duplicados
- Avaliação por estrelas (1–5), com destaque visual no hover, e comentário com edição ou remoção
- Marcar/desmarcar jogo como "jogado"
- Perfil do usuário com suas avaliações, comentários e jogos jogados
- Logo na navegação e favicon próprio em
/favicon.ico
| Rota | O que mostra |
|---|---|
/ |
Home com ranking, jogos aleatórios e gêneros |
/buscar/ |
Busca de jogos |
/ranking/ |
Top 20 do mês ou ranking geral quando não houver avaliações no mês |
/genero/<id>/ |
Jogos de um gênero |
/jogo/<id>/ |
Detalhe do jogo (trailer, avaliação, comentários) |
/jogo/<id>/jogado/ |
POST que adiciona/remove o jogo da lista de jogados |
/favicon.ico |
Favicon do Game Ranking |
/accounts/register/ |
Cadastro |
/accounts/login/ |
Login |
/accounts/profile/ |
Perfil com avaliações, comentários e jogos jogados |
Detalhes completos em CONTRIBUTING.md. Resumo:
python -m venv .venv
# ative o venv (PowerShell: .venv\Scripts\Activate.ps1 | bash: source .venv/bin/activate)
pip install -r requirements.txt
python manage.py migrate
python manage.py runserverAbra http://127.0.0.1:8000/.
python manage.py testEm um terminal, suba o servidor Django (passo acima). Em outro:
npm install # apenas na primeira vez
npm run cypress:open # modo interativo
npm run cypress:run # modo headlessPara rodar contra o site no ar (cria dados reais no banco de produção — use com cuidado):
npm run cypress:run:prodA aplicação é publicada automaticamente em Azure App Service via GitHub Actions a cada push para main. A pipeline em .github/workflows/django.yml tem três jobs encadeados:
test—python manage.py testcypress— soberunserverem sqlite isolado, faz seed mínimo de jogos demo e rodanpm run cypress:runcontra todos os specs E2Edeploy— só roda em push paramain, depende detestEcypresspassarem, fazcollectstatice publica viaazure/webapps-deploy@v3para o App Servicegame-ranking-app
Na boot da Azure, startup.sh aplica migrações, garante o superuser (se as envs DJANGO_SUPERUSER_* estiverem definidas) e sobe o gunicorn.
Variáveis de ambiente esperadas no Azure App Service (configurar via portal → Configuration → Application settings):
SECRET_KEY— chave secreta do Django (gere uma forte; não reutilize a de dev)DEBUG=FalseDATABASE_URL— string de conexão PostgresALLOWED_HOSTS— hostname do App ServiceCSRF_TRUSTED_ORIGINS— origem(ns) HTTPS do App ServiceDJANGO_SUPERUSER_USERNAME,DJANGO_SUPERUSER_EMAIL,DJANGO_SUPERUSER_PASSWORD— opcional, só se quiser auto-criar/atualizar um admin no boot
- Arthur de Almeida Oliveira
- Arthur Filipe Silva dos Reis
- Gabriel Gondim Malta
- Gabriel Mendes Cavalcanti
- Guilherme Silva Guimarães
- Helio de Moraes Rego Neto
- Matheus Assis de Souza Jacome
- Figma: https://www.figma.com/board/fm0wB9xITXtjeqBeBZYJjj/Sem-t%C3%ADtulo?node-id=0-1&t=9dShIyt3maLOlE0m-1
- Histórias do projeto: https://docs.google.com/document/d/1koSvhLiN-m2yipQsbQeLWTG0vbIIWovv3-FDx5r-KnA/edit?tab=t.0
- Prints do Jira:

- Screencast: https://www.youtube.com/watch?v=V_xk95SDth4
- Site deploy (histórico — substituído na Entrega 3): https://game-ranking.onrender.com/
- Prints do Jira:

- Screencast: https://youtu.be/iYjTGXvBgdk
- Relatório de pair programming:
Durante a prática de pair programming, as duplas alternaram os papéis de driver e navigator, mantendo comunicação constante, revisando o código continuamente e dividindo tarefas de forma lógica para garantir produtividade. Como resultado, houve redução de erros, maior clareza nas soluções, aprendizado mútuo, melhoria na qualidade do código e desenvolvimento de habilidades de comunicação e trabalho em equipe. Apesar de desafios como adaptação ao ritmo do parceiro, divergências de ideias e maior tempo na tomada de decisões, esses foram superados com diálogo e colaboração, tornando a prática eficaz tanto tecnicamente quanto no fortalecimento de competências interpessoais essenciais na área de tecnologia.
- Site deploy: https://game-ranking-app-ehfhd4gnhvgtatfq.brazilsouth-01.azurewebsites.net/
- Prints do Jira:

- Screencast (histórias): https://youtu.be/BfQr5rz33Ek
- Screencast (testes): https://youtu.be/XJjphy9XEuso
- Bugtracker:

- Relatório de pair programming:
Após um período de continuidade na prática de pair programming, foi possível observar uma evolução significativa na dinâmica das duplas, com maior sincronização entre driver e navigator e redução das divergências iniciais. A comunicação tornou-se mais objetiva e eficiente, permitindo decisões mais rápidas e um fluxo de trabalho mais natural. Além disso, houve aumento na confiança entre os participantes, refletindo em maior autonomia e produtividade. Os erros continuaram sendo minimizados e a qualidade do código manteve-se elevada, evidenciando que a prática constante contribui não apenas para o aprimoramento técnico, mas também para o fortalecimento do trabalho em equipe e adaptação a diferentes estilos de pensamento.
- Site em produção: https://game-ranking-app-ehfhd4gnhvgtatfq.brazilsouth-01.azurewebsites.net/
- Screencast das histórias finais (com URL visível durante todo o vídeo): https://youtu.be/s_DXP87hk8M
- Screencast dos testes E2E (execução do
npm run cypress:run)/Screencast do CI/CD (build + testes + deploy automatizado): https://youtu.be/XOkIT6Zml3E - Sprint 04 no Jira (prints do quadro e do backlog):
- Issue/bug tracker (GitHub Issues): https://github.com/CC-2025-2-CESAR/Game-Ranking/issues
- Guia de contribuição: CONTRIBUTING.md
- Lista de jogos jogados — botão "Marcar como jogado" / "Remover dos jogos jogados" na página de detalhes, lista no perfil. Modelo
PlayedGameemgames/models.py, viewtoggle_playedemgames/views.py, rota/jogo/<id>/jogado/, seção "Jogos jogados" emtemplates/accounts/profile.html, spec E2E emcypress/e2e/07-played.cy.js.
- Cadastro bloqueia e-mails duplicados usando comparação sem diferenciar maiúsculas/minúsculas.
- Comentário vazio remove o comentário existente do usuário naquele jogo, sem criar comentário vazio.
- Trailers do YouTube são normalizados para URL embutível (
/embed/<id>) antes de renderizar o iframe. - Capas locais ausentes deixam de quebrar a página: o sistema usa
cover_urle, se não houver, mostra o placeholder "Sem capa". /favicon.icoredireciona para o favicon do projeto e a navegação usa a nova logo do Game Ranking.- Ranking mensal mostra o Top 20 geral quando não existem avaliações no mês atual, deixando o estado da tela mais claro.
- Hover das estrelas destaca todas as estrelas até a nota escolhida antes do clique.
Na Entrega 4 a prática de pair programming foi mantida com rodízio mais ágil entre driver e navigator: o tempo médio em cada papel caiu, permitindo que mais membros tocassem nas partes mais sensíveis do projeto (pipeline CI/CD, modelo PlayedGame, configuração da Azure). A maior maturidade do time também permitiu sessões assíncronas — duas pessoas alinhavam por chamada de voz e revisavam em PR no GitHub, sem precisar estar lado a lado o tempo todo. O efeito foi um ciclo de revisão mais curto e menos retrabalho na pipeline de deploy.