|
|
| [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
|
|
|
|
|
|

|
|
|
|
|
|
---
|
|
|
|
|
|
## 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
|
|
|
|
|
|

|
|
|
|
|
|
---
|
|
|
|
|
|
## 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
|
|
|
|
|
|

|
|
|
|
|
|
---
|
|
|
|
|
|
## 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 |