Skip to content

Repository files navigation

Game Ranking

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/

Sumário

O que o site faz

  • 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

Estrutura das páginas

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

Como rodar localmente

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 runserver

Abra http://127.0.0.1:8000/.

Testes

Django (unit / integração)

python manage.py test

Cypress (E2E)

Em 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 headless

Para rodar contra o site no ar (cria dados reais no banco de produção — use com cuidado):

npm run cypress:run:prod

Deploy (Azure)

A 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:

  1. testpython manage.py test
  2. cypress — sobe runserver em sqlite isolado, faz seed mínimo de jogos demo e roda npm run cypress:run contra todos os specs E2E
  3. deploy — só roda em push para main, depende de test E cypress passarem, faz collectstatic e publica via azure/webapps-deploy@v3 para o App Service game-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=False
  • DATABASE_URL — string de conexão Postgres
  • ALLOWED_HOSTS — hostname do App Service
  • CSRF_TRUSTED_ORIGINS — origem(ns) HTTPS do App Service
  • DJANGO_SUPERUSER_USERNAME, DJANGO_SUPERUSER_EMAIL, DJANGO_SUPERUSER_PASSWORD — opcional, só se quiser auto-criar/atualizar um admin no boot

Integrantes

  • 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

Histórico de entregas

Entrega 1

Entrega 2

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.

Entrega 3

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.

Entrega 4

image image image

Histórias entregues nesta sprint

  • Lista de jogos jogados — botão "Marcar como jogado" / "Remover dos jogos jogados" na página de detalhes, lista no perfil. Modelo PlayedGame em games/models.py, view toggle_played em games/views.py, rota /jogo/<id>/jogado/, seção "Jogos jogados" em templates/accounts/profile.html, spec E2E em cypress/e2e/07-played.cy.js.

Correções de bugs e UX

  • 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_url e, se não houver, mostra o placeholder "Sem capa".
  • /favicon.ico redireciona 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.

Atualização sobre pair programming

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.

About

projeto de desenvolvimento de um software

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages