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

Last edited by Erick Dorneles Muniz Sep 04, 2025
Page history

Arquitetura

Home Escopo Gerência Processo Design Configuração Arquitetura Banco de Dados Transferência

Sumário

  1. Arquitetura da Solução
  2. Pipeline de Deploy (CI/CD)
  3. Arquitetura de Infraestrutura
  4. 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

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

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

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