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
This is an old version of this page. You can view the most recent version or browse the history.

Arquitetura

Home USs Sprints Mockups Arquitetura Database Estudos Git flow Configuração

Arquitetura Geral da Aplicação

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