Files
VdcScoreLive/docs/01-project-plan.md
2026-05-05 17:12:06 +01:00

106 lines
3.4 KiB
Markdown

# 01 — Plano do Projeto
## Objetivo
Criar um **website de administração** que sirva de backend para uma aplicação de liga de futebol. A aplicação cliente já está desenvolvida e lê dados em tempo real da Firebase. Este dashboard é o único ponto de escrita.
---
## Problema a Resolver
A aplicação cliente mostra dados em tempo real mas não tem interface de edição. É necessário um painel de administração que permita:
- Atualizar resultados durante os jogos (em tempo real)
- Gerir toda a estrutura da liga (clubes, jogadores, jornadas)
- Manter estatísticas atualizadas automaticamente
---
## Âmbito do Projeto
### In Scope
- Dashboard de administração web (SPA)
- Autenticação segura (apenas administradores)
- CRUD completo de jogos, clubes, jogadores
- Atualização de resultados em tempo real (live)
- Gestão de jornadas e classificação
- Estatísticas automáticas (calculadas a partir dos resultados)
- Interface responsiva (desktop-first, mas funcional em tablet)
### Out of Scope
- Aplicação cliente (já existe)
- API REST separada (Firebase é o backend direto)
- App móvel de administração
- Sistema de utilizadores múltiplos com permissões granulares (v1)
---
## Fases de Desenvolvimento
### Fase 0 — Planeamento e Design (ATUAL)
- [x] Definição de requisitos
- [x] Stack tecnológica
- [x] Arquitetura do sistema
- [x] Design system
- [x] Firebase schema
- [x] Mockup interativo
- [ ] Review e aprovação
### Fase 1 — Setup e Fundação
**Estimativa:** 1-2 sessões
- [ ] Inicializar projeto Vite + React + TypeScript
- [ ] Configurar Firebase SDK
- [ ] Configurar React Router
- [ ] Implementar autenticação Firebase Auth
- [ ] Layout base (sidebar + header + content area)
- [ ] Design system (cores, tipografia, componentes base)
### Fase 2 — Módulo de Jogos (Core)
**Estimativa:** 2-3 sessões
- [ ] Listagem de jogos por jornada
- [ ] Criação de jogo
- [ ] **Live Score Editor** — atualização em tempo real
- [ ] Finalizar jogo (resultado final)
- [ ] Histórico de jogos
### Fase 3 — Módulo de Gestão
**Estimativa:** 2 sessões
- [ ] CRUD de Clubes
- [ ] CRUD de Jogadores (com clube associado)
- [ ] Gestão de Jornadas
- [ ] Classificação (calculada automaticamente)
### Fase 4 — Estatísticas e Extras
**Estimativa:** 1-2 sessões
- [ ] Artilheiros (golos por jogador)
- [ ] Assistências
- [ ] Cartões (amarelos/vermelhos)
- [ ] Dashboard overview com métricas
### Fase 5 — Polish e Deploy
**Estimativa:** 1 sessão
- [ ] Testes e bug fixes
- [ ] Otimização de performance
- [ ] Deploy (Firebase Hosting)
- [ ] Configuração de domínio
---
## Critérios de Sucesso
1. Administrador consegue atualizar um resultado em menos de 10 segundos
2. A alteração aparece na app cliente em menos de 2 segundos (Firebase real-time)
3. Zero inconsistências na classificação (calculada automaticamente)
4. Interface funcional em desktop e tablet
5. Acesso protegido por autenticação
---
## Riscos e Mitigações
| Risco | Probabilidade | Mitigação |
|---|---|---|
| Schema Firebase incompatível com app cliente | Alta | Documentar schema existente antes de escrever |
| Conflitos de escrita simultânea | Baixa | Usar Firebase transactions |
| Performance com muitos listeners real-time | Média | Limitar listeners ativos, usar pagination |
| Segurança (acesso não autorizado) | Alta | Firebase Security Rules rigorosas |