Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Wiki Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • WimBelemDon
  • WikiWiki
  • Wiki
  • arquitetura

arquitetura · Changes

Page history
docs(wiki): write in the "arquitetura" topic authored Sep 06, 2025 by Felipe Conzatti Frison's avatar Felipe Conzatti Frison
Show whitespace changes
Inline Side-by-side
arquitetura.md 0 → 100644
View page @ 5354cb78
## 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
```mermaid
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:**
```bash
npm run prisma:migrate:dev -- <nome>
Cria e aplica migração usando .env.development.
- **Deploy**:
```bash
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.
![fluxoAuth](uploads/16bb8a96ab1209d44ca41caaeb3c91b7/fluxoAuth.png)
## 4. Fluxo de Deploy / CI-CD
![fluxo-deploy](uploads/1e61aee91d1663544a5a749c6ff0d5ac/fluxo-deploy.png)
Branches usadas (main, develop, etc).
Pipeline de build/test/deploy (ex.: GitHub Actions).
Clone repository
  • Banco de Dados
  • Escopo
  • Home
  • arquitetura
  • frontend
  • processo