Home | Escopo | Processo | Design/Mockups | Configuração | Arquitetura | Gerência | Código | BD | Frontend | Backend |
---|
1. Arquitetura do Sistema
Visão geral
O projeto utiliza NestJS como framework backend, responsável por gerenciar a comunicação com o frontend e organizar a aplicação em módulos bem estruturados. Toda a infraestrutura do backend, incluindo a aplicação e o banco de dados, é executada em contêineres Docker, o que garante portabilidade, facilidade de configuração e isolamento entre os serviços.
Como sistema gerenciador de banco de dados foi escolhido o PostgreSQL, por ser robusto, amplamente utilizado em aplicações de produção e não possuir custos de licenciamento ou taxas de uso associadas.
Arquitetura e Tecnologias do Backend
Esta seção detalha as principais tecnologias usadas para a arquitetura do servidor e a infraestrutura do projeto.
NestJS (Framework Backend)
O NestJS é o framework principal utilizado no backend. Suas responsabilidades-chave no projeto são:
- Gerenciar a comunicação entre as requisições do frontend e o servidor.
- Organizar a aplicação em módulos bem estruturados, facilitando a manutenção e a escalabilidade.
Docker (Infraestrutura e Contêineres)
Toda a infraestrutura de backend, incluindo a aplicação NestJS e o banco de dados, é executada utilizando Docker.
Fluxo de Dados
flowchart TD
A(Frontend)
B(API-Middleware)
C{Verifica auth?}
X(Controller)
D(Camada de serviço)
E(Camada de repository)
F(Database)
G(Return 403 Forbidden)
A --> |HTTP request| B
B --> C
C -->|Sim| X
C -->|Nao| G
X --> D
D --> E
E --> F
F --> E
E --> D
D --> X
X --> |HTTP response| A
2. Banco de Dados
Estratégia de migrações (Prisma Migrate)
Usamos Prisma Migrate com os comandos:
-
Desenvolvimento:
npm run prisma:migrate:dev -- <nome>
Cria e aplica migração usando .env.development.
-
Deploy:
npm run prisma:migrate:deploy
Aplica migrações existentes com o schema de produção.
3. Integrações externas
A autenticação é realizada via Firebase Auth. O frontend utiliza login social (Google, etc.) e recebe um ID Token (JWT) do Firebase. Esse token é então enviado ao backend, que valida sua autenticidade com o Firebase antes de autorizar o acesso.