Home | Escopo | Processo | Design/Mockups | Configuração | Arquitetura | Gerência | Código | BD | Qualidade | Frontend | Backend | Analytics |
---|
Arquitetura
Descrição
Esta seção da documentação visa apresentar os padrões arquiteturais gerais do projeto, bem como a infraestrutura adotada.
Sumário
Arquitetura E2E
O projeto Pagges adota uma arquitetura baseada no padrão Model-View-Controller (MVC), promovendo a separação clara entre a camada de apresentação, lógica de negócio e persistência de dados.
🔧 Backend (NestJS)
A estrutura do backend foi construída utilizando o framework NestJS, com foco em modularidade e escalabilidade. A organização de pastas está dividida da seguinte forma:
Essa estrutura permite manter a responsabilidade de cada parte bem delimitada, com fácil escalabilidade e manutenção.
📱 Frontend (Expo + React Native)
O frontend foi desenvolvido utilizando Expo com React Native e segue uma organização baseada em responsabilidades, focada em componentes reutilizáveis, separação de lógica, interface e dados:
A estrutura favorece a separação de responsabilidades e facilita a manutenção do código ao longo do crescimento do projeto.
Arquitetura de Infraestrutura
Diagrama em alto nível da arquitetura:
A infraestrutura do projeto foi construída utilizando Docker para orquestração dos serviços, AWS EC2 para hospedagem do backend e AWS ECR para armazenamento das imagens Docker. O frontend é hospedado via Vercel com deploy contínuo.
🖥 ️ Serviços Utilizados
- AWS EC2: Instância configurada para rodar containers Docker do backend, banco de dados e testes automatizados.
- AWS ECR: Armazenamento centralizado de imagens Docker utilizadas nas instâncias.
- Docker: Utilizado para conteinerizar o backend e seus serviços auxiliares.
🔁 Fluxo de Deploy
- Alterações na branch
main
disparam o pipeline do GitLab CI/CD. - O backend é empacotado em uma imagem Docker e enviado ao ECR.
- A nova imagem é utilizada para atualizar o container rodando na instância EC2.
A arquitetura do projeto garante escalabilidade, modularidade e uma integração contínua eficiente, promovendo entregas rápidas e seguras ao longo do desenvolvimento.