# 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 |