Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Operações GAECO wiki Operações GAECO 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
  • Operações GAECO
  • Operações GAECO wiki Operações GAECO wiki
  • Wiki
  • Arquitetura

Arquitetura · Changes

Page history
Update Arquitetura authored Sep 04, 2025 by Erick Dorneles Muniz's avatar Erick Dorneles Muniz
Hide whitespace changes
Inline Side-by-side
Arquitetura.md 0 → 100644
View page @ b87b4d5a
| [Home](home) | [Escopo](escopo) | [Gerência](Gerencia) | [Processo](processo) | [Design](design) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Banco de Dados](Banco de Dados) | [Transferência](transferência) |
|-|-|-|-|-|-|-|-|-|
## Sumário
1. [Arquitetura da Solução](#arquitetura-da-solução)
2. [Pipeline de Deploy (CI/CD)](#pipeline-de-deploy-cicd)
3. [Arquitetura de Infraestrutura](#arquitetura-de-infraestrutura)
4. [Estrutura de Pastas](#estrutura-de-pastas)
## Arquitetura da Solução
A aplicação é composta por três camadas principais:
- **Frontend (Mobile):** Desenvolvido em **React Native** com **Expo** e **TypeScript**, voltado para multiplataforma (Android, iOS e Web).
- **Backend (API REST):** Implementado em **Java 21** com **Spring Boot**, estruturado segundo princípios de **Domain-Driven Design (DDD)**.
- **Banco de Dados:** Persistência em **PostgreSQL**, utilizando JPA/Hibernate.
### Diagrama da Arquitetura
![Arquitetura da Solução](https://tools.ages.pucrs.br/opera-es-gaeco/operacoes-gaeco-wiki/-/raw/main/documents/arquitetura/Diagrama_de_Arquitetura.png)
---
## Pipeline de Deploy (CI/CD)
O fluxo de entrega contínua é realizado via **GitLab** e **Docker**, com execução em **AWS EC2** e **AWS S3**:
1. **Commit & Push** no repositório GitLab.
2. **Pipeline GitLab** é executado pelo GitLab Runner.
3. Estágios principais:
- **Build** do projeto.
- **Execução de testes unitários** (mínimo 80% de cobertura).
- **Build de imagens Docker** para backend e frontend.
- **Deploy automático** dos containers no **AWS EC2** e upload de assets para **AWS S3**.
### Diagrama de Deploy
![Pipeline de Deploy](https://tools.ages.pucrs.br/opera-es-gaeco/operacoes-gaeco-wiki/-/raw/main/documents/arquitetura/Diagrama_de_Deploy.png)
---
## Arquitetura de Infraestrutura
A solução é hospedada na **AWS Cloud**, contemplando:
- **EC2:** responsável por executar os containers do Backend (Spring Boot), Frontend (React Native Web/Expo) e Banco de Dados (PostgreSQL).
- **S3:** utilizado para armazenamento de assets estáticos (imagens, documentos, arquivos).
- **Docker (via Docker Compose):** garante padronização do ambiente e facilita o deploy.
### Diagrama de Infraestrutura
![Infraestrutura](https://tools.ages.pucrs.br/opera-es-gaeco/operacoes-gaeco-wiki/-/raw/main/documents/arquitetura/Arquitetura_de_Infraestrutura.png)
---
## Estrutura de Pastas
### Frontend (React Native + Expo)
- **app/**
- **\_layout.tsx**: Layout principal da navegação.
- **index.tsx**: Tela inicial (login).
- **(tabs)/**: Telas de navegação por abas (Operações, Perfil).
- **(modals)/**: Telas modais (ex: Nova Operação).
- **components/**
Componentes reutilizáveis da interface.
- **hooks/**
Hooks customizados para lógica de estado e efeitos.
- **services/**
Serviços para integração com APIs e lógica de negócio.
- **theme/**
Definições de tema, cores e estilos globais.
- **utils/**
Funções utilitárias.
- **assets/**
Imagens e ícones utilizados no app.
### Backend (Java + Spring Boot + DDD)
- **application/**
- **config/**: Configurações globais da aplicação (ex.: Swagger, CORS, Beans).
- **controller/**: Pontos de entrada da API (REST Controllers).
- **dto/**: Objetos de transferência de dados usados entre camadas (Request/Response).
- **service/**: Serviços da camada de aplicação, orquestram regras de negócio chamando serviços de domínio.
- **domain/**
- **entity/**: Entidades do domínio mapeadas com JPA/Hibernate.
- **enums/**: Enumerações usadas no domínio (ex.: Status, OperationType).
- **repository/**: Interfaces de repositórios do domínio (contratos).
- **service/**: Interfaces e regras de negócio puras do domínio.
- **infrastructure**
- **repository/**: Implementações concretas dos repositórios, geralmente usando Spring Data JPA.
- **resources/**
Arquivos de configuração (application.properties, application.yml).
- **test/**
Testes
Clone repository
  • Arquitetura
  • Banco de Dados
  • Escopo
  • Home