Home | Escopo | Gerência | Processo | Design | Configuração | Arquitetura | Banco de Dados | Transferência |
---|
Sumário
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:
- Commit & Push no repositório GitLab.
- Pipeline GitLab é executado pelo GitLab Runner.
- 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