## Plano de Modularização

### Objetivo
Dividir responsabilidades do servidor e do painel web em unidades menores (serviços, hooks, componentes) para facilitar debug, testes e futuras evoluções.

---

### Backend (`server/`)

1. **Extrair Serviços**
   - Criar pastas `src/services/installer`, `src/services/updates`, `src/services/licenses`.
   - Cada serviço expõe funções puras/com side-effects controlados (ex.: `VersionPublisher.publish`, `InstallerDownloads.sendArchive`).
   - Controllers passam a importar os serviços e apenas traduzir requisições/respostas HTTP.

2. **Repositórios Prisma**
   - Implementar uma camada `repositories` com consultas específicas (ex.: `VersionsRepository.findActiveByChannel(channel)`).
   - Facilita mocking em testes e evita repetir queries complexas.

3. **Rotas Especializadas**
   - Quebrar `routes/*.ts` extensos em sub-rotas (ex.: `/routes/installer/index.ts` + `/routes/installer/settings.ts`).
   - Aplicar middlewares comuns (auth, validação de schema) nesses sub-módulos.

4. **Documentação**
   - Adicionar diagramas simples por domínio em `docs/` (fluxo de publicação, promoção de versão, download do instalador).
   - Manter README por pasta descrevendo dependências e pontos de extensão.

---

### Frontend (`web-admin/`)

1. **Hooks de Dados**
   - `useDashboardMetrics`, `useInstallerData`, `useInstallerSettings` para encapsular fetch + estados de loading/erro.
   - Facilita reuso em componentes menores e testes com mocks.

2. **Componentização**
   - Dashboard: criar `ActiveChannelsCard`, `LatestReleaseList`, `MetricCard` (já existe) para reduzir responsabilidades.
   - Installer: dividir em `ReleaseList`, `DownloadPanel`, `OsInstructions`.

3. **Camada de Serviços**
   - `src/services/metrics.ts`, `src/services/installer.ts` encapsulam chamadas ao `api`.
   - Hooks consomem os serviços; componentes não lidam mais com Axios diretamente.

4. **Storybook/Docs**
   - Para componentes críticos (cards/painéis), criar exemplos rápidos ou doc MDX com props/estados.

---

### Roadmap sugerido

1. **Backend – Installer/Updates**
   - Extrair serviço de publicações e download do instalador.
   - Atualizar controllers + adicionar testes integrados.
2. **Frontend – Dashboard**
   - Criar hooks/componentes listados e ajustar rotas.
3. **Frontend – Installer**
   - Mesma estratégia para tela Installer, garantindo testes básicos (Vitest/RTL).
4. **Documentação contínua**
   - Registrar cada PR/alteração em `docs/CHANGELOG.md` ou equivalente com instruções de migração.

