Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W 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
  • Free From Club
  • Wiki
  • Wiki
  • Arquitetura

Last edited by Gustavo Vicentini Deon May 06, 2023
Page history

Arquitetura

Home USs Sprints Mockups Arquitetura Database Estudos Gerenciamento Configuração

Arquitetura Geral da Aplicação

Diagrama de Deploy

diagrama_de_deploy.drawio diagrama_de_deploy

Backend

Definições de Tecnologias

  • Linguagem: Java 11

  • Framework: Spring Boot

  • Presentation layer (Controller): Layer da aplicação onde são apresentandos os endpoints da aplicação, sendo dentre deles os controllers, Data Transfer Objects (DTOs) e entidades.

  • Business logic layer (Service): Layer da aplicação de services onde está presente a lógica da aplicação, pesquisas para o mapa, tratamento e processamento dos dados, pesquisas das restrições e entre outras coisas.

  • Data access layer (Repository): Layer onde é realizada a a comunicação com o banco de dados, fazendo buscas, criações de objetos, mudanças de dados no geral.

Módulos do Sistema

  • config: contém as configurações do Swagger.
  • controller: é o ponto de entrada do backend, onde ficam definidos os endpoints da aplicação, ou seja, os caminhos após o endereço do servidor como /user e qual o tipo de chamada o endereço irá receber GET, POST, PUT ou DELETE.
  • dto: possui os objetos utilizados para transportar dados entre as camadas.
  • entity: possui os mapeamentos para a tabela do banco de dados.
  • enums : possui as enumerações utilizadas nas DTOS ou entidades.
  • message: centraliza todas as mensagens que são enviadas ao frontend.
  • repository: centraliza toda a comunicação com o banco de dados, passando os parâmetros adequados para as funções desejadas.
  • security: define configurações de acesso aos endpoints e a autenticação de usuários cadastrados.
  • service: centraliza todas as nossas regras de negócio, utilizando o repository para fornecer os dados do banco e realizar as validações.
  • util: possui classes que tem métodos que são utilizados em diversos services, como por exemplo, o Validations.java, que contém validações de campos de um objeto. Nessa camada também ficam as exceptions personalizadas e os handlers dessas exceptions.

Diagrama de Fluxo

As camadas da aplicação se comunicam da seguinte maneira, um fluxo de dados inicia com a requisição do usuário na camada Controller, que encaminha os dados para o Service onde são chamados os métodos do Repository, nele ocorre as ações com o banco como SELECT, INSERT, UPDATE e DELETE.

Frontend

Definições de Tecnologias

  • Linguagem: Typescript

  • Framework: React Native

  • Expo

Na sprint 0, foi feito um questionário com o time para quantificar o conhecimento dos alunos em linguagem, frameworks e bancos de dados para determinar quais as tecnologias que seriam utilizadas de acordo com o conhecimento geral do time. Com base no questionário e em discussões com o time, foi definido utilizar o spring boot para o desenvolvimento do backend da aplicação.

No frontend Utilizamos o Framework React Native que aborda a interface como uma função, e representa o estado atual da aplicação, apresentando componentes visuais escritos em Typescript que podem ser reutilizados em diferentes screens.

Clone repository
  • Arquitetura
  • Database
  • Endpoints
  • Estudos
  • Mockups
  • Sprints
  • USs
  • configuracao
  • gerenciamento
  • Home