Documento de Gerência de Configuração de Software
| Versão | Data | Autor(es) | Descrição |
|---|---|---|---|
| 1.0 | 18/02/2026 | João Pedro S. Brito | Definições iniciais sobre modelo de ramificações, estrutura de repositórios, issues, pull-requests e gerenciamento de migrações de banco de dados para o projeto STATS. |
| 1.1 | 03/03/2026 | Antonio G. Castro | Adição de templates de tarefas, template de pull request, específicações de metodologias ágeis. |
| 1.2 | 17/06/2026 | Antonio G. Castro | Remove templates desse documento, edita ferramenta de banco de dados. |
Sumário
- Introdução
- Tecnologias e Infraestrutura (Stack)
- Estrutura de Repositórios
- Modelo de Ramificação (Branching Model)
- Gerenciamento de Mudanças e Tarefas
- Gerenciamento de Pull Requests (PRs) — (seção não existe, ainda precisa ser escrita)
- Gerenciamento de Mensagens de Commit
- Gerenciamento de Banco de Dados (Migrações)
1. Introdução
Este documento estabelece as diretrizes e padrões de Gerência de Configuração de Software (GCS) para o projeto Remo e Cruzeiro em Números.
O objetivo é garantir a rastreabilidade, padronização e qualidade do código desenvolvido, facilitando o trabalho assíncrono entre os membros da equipe e a entrega contínua do MVP.
2. Tecnologias e Infraestrutura (Stack)
A arquitetura do projeto foi desenhada para suportar um modelo multitenant, separando responsabilidades e garantindo desempenho (detalhes no Diário de Decisão):
- Frontend: React com Next.js
- Backend: Node.js com NestJS
- Banco de Dados: PostgreSQL
- ORM: Prisma
- Extração e Tratamento de Dados (ETL): Python (Pandas, BeautifulSoup)
- Controle de Versão e Gestão Ágil: Git e GitHub Projects
3. Estrutura de Repositórios
O projeto adota arquitetura multitenant e separa as responsabilidades de Frontend e Backend em repositórios distintos, todos sob a mesma organização no GitHub:
- stats-backend: Contém a API REST em NestJS, o ORM Prisma e os scripts de ETL em Python.
- stats-frontend-remo: Aplicação web em Next.js com a identidade visual do Clube do Remo.
- stats-frontend-cruzeiro: Aplicação web em Next.js com a identidade visual do Cruzeiro.
3.1 Gestão de Acessos e Credenciais (RBAC)
O projeto adota a prática de Role-Based Access Control (RBAC). Não utilizamos credenciais ou e-mails compartilhados genéricos.
- Os repositórios pertencem a uma Organização no GitHub.
- Os serviços de infraestrutura são acessados por convites individuais atrelados aos e-mails pessoais/institucionais de cada membro.
- O acesso ao banco de dados para desenvolvimento é feito estritamente via compartilhamento seguro da variável
DATABASE_URLno arquivo.envlocal.
4. Modelo de Ramificação (Branching Model)
A equipe utiliza o GitHub Flow, um modelo simplificado, ágil e focado em entregas contínuas, ideal para equipes reduzidas.
4.1 Branches Principais
- main: É a ramificação de produção. O código nesta branch deve estar sempre estável, funcional e pronto para deploy automático nas plataformas de hospedagem. Nenhum commit direto é permitido na main., exceto correções no repositório de documentação.
4.2 Branches de Trabalho (Features e Fixes)
Para qualquer nova funcionalidade ou correção, deve-se criar uma ramificação a partir da main.
- Regra de Nomenclatura:
<tipo>/<descricao-curta> - Tipos permitidos:
feat/: desenvolvimento de novas funcionalidades.fix/: correções de bugs ou erros mapeados.docs/: alterações exclusivas em documentação.
- Exemplos:
feat/filtro-partidas,fix/15-erro-calculo-renda.
5. Gerenciamento de Mudanças e Tarefas
O ciclo de desenvolvimento baseia-se em Sprints adaptativas de 2 semanas, gerenciadas via GitHub Projects.
O volume de tarefas por Sprint varia conforme a Capacidade Declarada da equipe (reduzida em semanas de provas acadêmicas).
Dinâmica de Sprints e Capacidade
Utilizamos um modelo de Scrum-ban Adaptativo com Sprints de 2 semanas.
- Gestão de Capacidade: Em semanas de provas ou alta carga acadêmica, a equipe declara "Baixa Capacidade" durante a reunião de Planning, podendo reduzir o escopo para 1 tarefa ou declarar "Sprint de Pausa" para não comprometer a qualidade.
5.1 Critérios para Mesclagem (Merge)
- Revisão de Código: o PR deve ser aprovado por pelo menos 1 membro da equipe diferente do autor.
- Rastreabilidade: o PR deve referenciar a issue correspondente usando palavras-chave (ex:
Closes #12ouFixes #15). Isso fechará a tarefa automaticamente no Kanban. - Conflitos: não deve haver conflitos com a branch
main. O autor é responsável por realizar o rebase ou merge damainem sua branch e resolver os conflitos localmente antes de solicitar aprovação.
7. Gerenciamento de Mensagens de Commit
A equipe adota a convenção Conventional Commits para manter o histórico de versionamento semântico, legível e automatizável.
- Estrutura do commit:
<tipo>(<escopo opcional>): <descrição curta no imperativo> - Tipos permitidos:
feat: adição de nova funcionalidade.fix: correção de bug.chore: atualização de ferramentas, dependências ou configurações que não afetam o código em si (ex:.gitignore, mudanças de provedor de host).refactor: refatoração de código que não adiciona recurso nem corrige bug.style: formatação, ponto-e-vírgula, espaçamentos (não afeta o comportamento).docs: alterações na documentação (README.md, PDFs, etc).
7.1 Exemplos
feat(api): cria endpoint de busca de partidas por clubefix(frontend): corrige sobreposição do header no mobilechore: atualiza versão do Prisma ORM
8. Gerenciamento de Banco de Dados (Migrações)
Devido à arquitetura da aplicação, as alterações de esquema de banco de dados (schema) devem seguir controle de versão estrito usando as ferramentas do Prisma.
- Toda alteração no banco de dados deve ser feita primeiramente no arquivo
schema.prisma. - O desenvolvedor deve gerar uma migração local utilizando o comando
npx prisma migrate dev --name <descricao>. - A pasta gerada
prisma/migrations/deve obrigatoriamente ser versionada (commitada) e enviada no Pull Request, pois ela contém os scripts SQL que instruirão o banco de dados de produção (Neon) a se atualizar.