106 lines
3.4 KiB
Markdown
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 |
|