Visão Lógica
A visão lógica descreve a decomposição funcional do AnatoQuizUp em módulos e componentes. Ela mostra quais partes compõem o sistema, quais responsabilidades cada camada possui e como frontend, backend, domínio e banco de dados se relacionam.
Organização geral
O sistema é organizado em quatro blocos principais ativos (mais um reservado):
- Frontend Web: interface usada por alunos, professores e administradores.
- BFF (Backend-For-Frontend): ponto de entrada público; valida JWT; injeta token interno; orquestra chamadas para Backend ou AI.
- Backend API: regras de negócio, autenticação, autorização e exposição dos endpoints.
- Banco de Dados: persistência dos dados da aplicação.
- AI Service (reservado): serviço de IA para semestres futuros; vazio nesta release.
Frontend
O frontend é organizado em camadas seguindo Feature-Sliced Design. Essa divisão ajuda a separar telas, funcionalidades, componentes estruturais, modelos de domínio e recursos compartilhados.
| Camada | Responsabilidade |
|---|---|
app |
Inicialização da aplicação, rotas, providers e estilos globais. |
pages |
Telas acessadas pelo usuário. |
widgets |
Blocos maiores de interface, como cabeçalho, navegação e layouts. |
features |
Funcionalidades do usuário, como login, cadastro, recuperação de senha e gerenciamento. |
entities |
Modelos centrais do domínio, como usuário, perfil e status. |
shared |
Componentes genéricos, cliente HTTP, configurações e utilitários. |
BFF
O BFF é organizado em camadas mais simples que o Backend, refletindo seu papel de proxy 100% orquestração:
| Componente | Responsabilidade |
|---|---|
| Rotas | Definem prefixos públicos (/api/v1/autenticacao, /api/v1/admin, /api/v1/exemplos, /api/v1/ia) e quais exigem JWT. |
| Middlewares | autenticacao (validação de JWT no BFF), proxy (repassa request com cabeçalhos injetados), tratamento-erros (mapeia erros do downstream). |
| Clientes HTTP | backend.client e ai.client — instâncias Axios apontadas para os serviços de domínio. |
Backend
O backend é organizado em módulos de domínio. Cada módulo deve reunir suas rotas, validações, controllers, services, repositories, DTOs e testes.
| Componente | Responsabilidade |
|---|---|
| Rotas | Definem os endpoints HTTP e aplicam middlewares. |
| Middlewares | Tratam validação, autenticação, autorização e erros. |
| Controllers | Recebem requisições e chamam os serviços. |
| Services | Concentram regras de negócio. |
| Repositories | Isolam o acesso ao banco de dados. |
| Schemas | Validam entradas com Zod. |
| DTOs | Definem contratos de entrada e saída. |
Módulos principais
Os principais módulos lógicos previstos para o sistema são:
| Módulo | Responsabilidade |
|---|---|
| Autenticação | Cadastro, login, logout, tokens e recuperação de senha. |
Relação entre as camadas
O frontend não acessa o backend nem o banco diretamente. As telas chamam o BFF, que valida o JWT e repassa para o Backend (ou AI) injetando X-Internal-Token. O Backend valida os dados recebidos, aplica as regras de negócio e acessa o banco por meio do Prisma.
Tanto o BFF quanto o Backend usam respostas padronizadas para que o frontend trate sucesso, erro e paginação de forma consistente.
sequenceDiagram
participant F as Frontend
participant B as BFF
participant R as Rotas (Backend)
participant C as Controller
participant S as Service
participant P as Repository
participant DB as Banco
F->>B: Requisição HTTP (Bearer JWT)
B->>B: Valida JWT (assinatura/expiração)
B->>R: Repassa com X-Internal-Token + X-User-*
R->>C: Encaminha dados validados
C->>S: Executa caso de uso
S->>P: Solicita dados
P->>DB: Consulta ou grava
DB-->>P: Retorna dados
P-->>S: Retorna resultado
S-->>C: Retorna regra aplicada
C-->>R: Resposta
R-->>B: Resposta
B-->>F: Resposta padronizada
Histórico de Versão
| Data | Versão | Descrição | Autor(es) |
|---|---|---|---|
| 27/04/2026 | 1.0 | Criação da visão lógica da arquitetura | Breno Fernandes |
| 27/04/2026 | 1.1 | Simplificação da visão lógica com foco em módulos, camadas e responsabilidades | Breno Fernandes |
| 05/05/2026 | 1.2 | Inclusão do BFF como camada lógica entre Frontend e Backend (PRD: Migração para Arquitetura com BFF) | Miguel Moreira |