Pular para conteúdo

ADR 0006: Separação de API e Frontend (SPA)

Status

Aceito

Contexto

Na evolução de plataformas acadêmicas, frequentemente começamos com monolitos renderizados no servidor (Server-Side Rendering). Porém, os requisitos de usabilidade exigem uma experiência rápida, com drag-and-drop nativo e dashboards dinâmicos para orientadores e auditores. Além disso, no futuro, a plataforma pode precisar expor endpoints para integrações com outros sistemas universitários (SIGAA, Moodle).

Decisão

Optamos por uma Arquitetura Desacoplada, utilizando um Frontend SPA (Single Page Application) construído em React e uma API RESTful independente no backend.

Alternativas Consideradas

  • Monolito com Server-Side Rendering (SSR - Thymeleaf): Descartado pois, embora simplificasse o deploy inicial e não exigisse tratamento complexo de tokens (CORS), limitaria a reusabilidade da API para integrações futuras (como uso por outros sistemas universitários) e dificultaria a interatividade fluida esperada em dashboards de auditoria.

Consequências

Positivas

  • Experiência de Usuário (UX): Transições rápidas e interativas sem recarregar a página, melhorando a percepção de performance.

  • Separação de Preocupações: O time de frontend pode trabalhar e fazer deploys independentes do time de backend.

  • Reaproveitamento de API: A mesma API que atende o React poderá atender eventuais integrações via scripts ou aplicativos móveis no futuro.

Negativas / Riscos

  • Complexidade de Deploy: Exige dois pipelines de CI/CD distintos (um para o frontend, outro para o backend).

  • Gerenciamento de Estado de Autenticação: Diferente de um monolito tradicional, exige a troca de tokens ou configuração fina de cookies CORS (ADR 0002) entre domínios distintos.


Histórico de Versões

Versão Data Descrição Autor
1.0 04/06/2026 Criação do documento Pedro Henrique P. Santos
1.1 13/06/2026 Revisão técnica e reestruturação da documentação Pedro Henrique P. Santos
1.2 04/07/2026 Revisão profunda, correção de metadados e melhorias visuais Pedro Henrique P. Santos

Comentários