Skip to content

GitLab

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

Last edited by Giovanni Gonçalves Migon Nov 24, 2023
Page history

Arquitetura

Documentação do negócio

Documentação técnica


\mathbb{ARQUITETURA}

Esta seção é dedicada a apresentar a arquitetura definida para o projeto.
Sendo esta dividida nas seguintes partes:

  • Backend
  • Frontend Mobile
  • Frontend Web
  • Diagrama de Deploy

Ambos os projetos seguiram os princípios de Clean Architecture[1][2], e cada repositório possui uma arquitetura em camada que condiz com a sua finalidade. Ambos são descritos melhor nos tópicos abaixo.

⚙ Backend

Stacks definidas:

As camadas do sistema estão descritas abaixo.

Controllers

São responsáveis por prover serviços, e por conectar os demais módulos pertinentes do sistema, com a aplicação backend.

Services

Camada intermediária da aplicação, a qual define a comunicação entre Controllers e Repositories, provendo uma conversão mútua da lógica de sistema, com a lógica de negócio.

Repositories

Define as lógicas diretamente estruturadas com a troca de dados, entre a aplicação backend e o banco de dados.

Prisma

Este ficheiro define a camada de Models, a qual tem por função detalhar o formato dos dados transitados com o banco de dados. E o mesmo, é assim denominado por fazer uso do Prisma, uma biblioteca de ORM (Object Relational Mapping) que provê serviços de query para simplificar a gerência sobre o banco de dados.

Link para o Repositório: Backend


📱 Mobile

Stacks definidas:

As camadas do sistema estão descritas abaixo.

Components

Descrevem elementos visuais independentes, os quais possuem uma lógica descrita internamente, em cada componente. Também há componentes que se utilizam de outros componentes, tornando-se um componente de maior complexidade. Os componentes asseguram que o código seja desacoplado, flexível, reutilizável, e de fácil manutenção. Atualmente, é usual organizá-los em uma página para a estruturação dela.

Hooks

Assim como Components, os Hooks permitem reunir diversas lógicas para um único código, proporcionando características idênticas aos Components, ou seja, código desacoplado, flexível, reutilizável, e de fácil manutenção.

Pages

São as telas da aplicação. Onde reunimos os Components e Hooks a fim de organizar os módulos do sistema na página.

Services

É a camada responsável por dispor serviços para a aplicação. Dentre eles, estão as funcionalidades do Firebase.

Link para o Repositório: Mobile


💻 Web

Stacks definidas:

As camadas do sistema estão descritas abaixo.

Components

Descrevem elementos visuais independentes, os quais possuem uma lógica descrita internamente, em cada componente. Também há componentes que se utilizam de outros componentes, tornando-se um componente de maior complexidade. Os componentes asseguram que o código seja desacoplado, flexível, reutilizável, e de fácil manutenção. Atualmente, é usual organizá-los em uma página para a estruturação dela.

Contexts

Permite estrututrar os dados da aplicação e facilitar o uso para as demais camadas. De maneira geral, ele torna "global" o acesso aos dados,

Hooks

Assim como Components, os Hooks permitem reunir diversas lógicas para um único código, proporcionando características idênticas aos Components, ou seja, código desacoplado, flexível, reutilizável, e de fácil manutenção.

Pages

São as telas da aplicação. Onde reunimos os Components e Hooks a fim de organizar os módulos do sistema na página.

Services

É a camada responsável por dispor serviços para a aplicação. Dentre eles, estão as funcionalidades do Firebase.

Types

Descrevem as entidades da aplicação, que descrevem a lógica de negócio do sistema.

Link para o Repositório: Web


🚀 Diagrama de Deploy

O diagrama a seguir apresenta a arquitetura em alto nível e o processo de deploy da infraestrutura do projeto:

diagrama_de_deploy

A cada nova versão gerada na branch main dos repositórios Web e Backend, os respectivos códigos serão envolvidos em um container Docker e movidos ao Gitlab Runner do qual realiza a etapa de build e direciona a aplicação executável para cada instância da AWS.

O repositório do Mobile não necessita estar em um servidor, por conta do sistema poder ser executado em um ou vários dispositivos mobiles. E devido ao framework do Expo, é possível executar o App em diversos sistemas mobiles, como iOS, Android, e também permite portá-lo em uma versão Web.

Os principais módulos do sistema vão dispor de conexões distintas entre sí, das quais sofrerão alterações mediante o andamento dos projetos.

Arquivo XML para o Diagrams.net

💸 Orçamento AWS

Essa sessão apresenta o orçamento da infraestrutura na AWS. O orçamento foi feito utilizando a ferramenta AWS Pricing Calculator e busca estimar o custo financeiro para manter a infraestrutura do projeto pelo período de 1 semestre, sendo este a duração do projeto e da disciplina da AGES.

O PDF gerado através do AWS Pricing Calculator com o orçamento para a infraestrutura do projeto pode ser encontrado nesse link: My_Estimate_-_AWS_Pricing_Calculator.pdf

A seguir serão apresentados os componentes (serviços da AWS) que irão compor a infraestrutura do projeto:

  • AWS Advance EC2 instance (t4g.nano)

  • AWS Advance EC2 instance (t2.medium)

Resumo Geral: Para manter a infraestrutura do projeto por 1 semestre, esse será o custo financeiro estimado a cada mês e ao final do semestre:

  • Custo Imediato: 549.25 USD
  • Custo Mensal: 3.07 USD
  • Custo Semestral: 18,42 USD

Referências

[1] MARTIN, Robert. Clean Architecture: A Craftsman's Guide to Software Structure and Design. Pearson, 2017.

[2] MARTIN, Robert. The Clean Architecture. 2012. Disponível em: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html Acesso em: 24 nov. 2023.

Clone repository
  • Home
Documentação do negócio
  • Controle de sprints
  • Requisitos de negócio (User Stories)
  • Processo de desenvolvimento
  • Gerenciamento do projeto
  • Horários disponíveis
Documentação técnica
  • Arquitetura
  • Mockups
  • Banco de dados