Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • N notareanotar-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
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Notar e Anotar
  • notareanotar-wiki
  • Wiki
  • Arquitetura do projeto

Last edited by Octavio Pitrez Carpes Jun 20, 2021
Page history

Arquitetura do projeto

Home Escopo Arquitetura Configuração Mockups BD Instalação Gerência Processos

Página da Arquitetura do Sistema

O projeto Notar e Anotar utiliza uma arquitetura orientada a serviços. Apenas um App se comunica com a API externa da aplicação, que por sua vez salva os dados em um banco de dados.

Como cliente foi feito um app nativo utilizando dart com o framework flutter, o servidor da aplicação foi escrito em Golang e o banco de dados escolhido foi o MongoDB.

O applicativo utiliza a API RESTful por meio de requisições http.

Esta página possui todas as informações da Arquitetura do seu projeto, Como:

  • Rotas de Backend (Arquitetura funcional)
    • Objects – Backend API
    • Methods – Backend API
  • Arquitetura Não Funcional
    • Diagrama de Pacotes / Componentes
  • Arquitetura de software
    • Diagrama de Deploy
    • Documentação sobre aplicação de
  • Design do Projeto
    • Análise dos principios SOLID
    • Code Review

Arquitetura

Arquitetura funcional

Rotas

A API do back-end possui as seguintes rotas:

        /user
	/subject
	/weekly_routine
	/routine_plan
	/task
	/routine_day

/user

Esta rota e responsavel por realizar as operacoes em relacao aos usuarios da aplicacao.

Operacoes

  • GET
  • PUT
  • POST
  • DELETE

/subject

Esta rota e responsavel por realizar as operacoes em relacao aos temas de cada semana da aplicacao.

Operacoes

  • GET: retorna uma lista de temas
{
    "id": "60a2e184d0bfeee92901d73b",
    "created_at": "0001-01-01T00:00:00Z",
    "updated_at": "0001-01-01T00:00:00Z",
    "name": "Introdução"
}

/weekly_routine

Esta rota e responsavel por realizar as operacoes em relacao as rotinas semanais de cada familia na aplicacao.

Operacoes

  • GET: retorna uma lista contendo as rotinas semanais
{
  "id": "60a2e184d0bfeee92901d734",
  "created_at": "0001-01-01T00:00:00Z",
  "updated_at": "0001-01-01T00:00:00Z",
  "year": "2021-05-17T21:35:00.459Z",
  "routine_plan_id": "60a2e184d0bfeee92901d72d",
  "week_number": 15,
  "subject": "60a2e184d0bfeee92901d72e",
  "routine_days": [
    {
      "id": "000000000000000000000000",
      "created_at": "0001-01-01T00:00:00Z",
      "updated_at": "0001-01-01T00:00:00Z",
      "date": "0001-01-01T00:00:00Z",
      "chores": null
    },
    {
      "id": "000000000000000000000000",
      "created_at": "0001-01-01T00:00:00Z",
      "updated_at": "0001-01-01T00:00:00Z",
      "date": "0001-01-01T00:00:00Z",
      "chores": null
    },
    {
      "id": "000000000000000000000000",
      "created_at": "0001-01-01T00:00:00Z",
      "updated_at": "0001-01-01T00:00:00Z",
      "date": "0001-01-01T00:00:00Z",
      "chores": null
    },
    {
      "id": "000000000000000000000000",
      "created_at": "0001-01-01T00:00:00Z",
      "updated_at": "0001-01-01T00:00:00Z",
      "date": "0001-01-01T00:00:00Z",
      "chores": null
    },
    {
      "id": "000000000000000000000000",
      "created_at": "0001-01-01T00:00:00Z",
      "updated_at": "0001-01-01T00:00:00Z",
      "date": "0001-01-01T00:00:00Z",
      "chores": null
    }
  ]
}
  • PUT
  • POST
  • DELETE

/routine_plan

Esta rota e responsavel por realizar as operacoes em relacao aos planos de rotinas criados pelas familias na aplicacao.

Operações

  • GET
  • PUT
  • POST
  • DELETE

/task

Esta rota e responsavel por realizar as operacoes em relacao as tarefas criadas pelas familias na aplicacao.

Operações

  • GET
  • PUT
  • POST
  • DELETE

/routine_day

Esta rota e responsavel por realizar as operacoes em relacao as rotinas criadas pelas familias na aplicacao.

Operações

  • GET
  • PUT
  • POST
  • DELETE

Arquitetura não-funcional

Diagrama de Componentes

Arquitetura de software

Arquitetura do sistema

O back-end da aplicação foi feito utilizando golang e mongodb. O ambiente proposto pelo time de arquitetura foi a utilização de containers docker em uma instância EC2 rodando ubuntu 18.04. Para rodar os dois containers foi utilizado docker-compose.

Diagrama do Sistema

Diagrama de Deploy

Para o deploy da aplicaçāo é necessário realizar um acesso remoto ssh na instância EC2 que se encontra na AWS. Depois de realizado o acesso, é preciso parar todos os containers do Docker, entrar na pastas /git/notar-e-anotar-back-end, /git/notar-e-anotar-database e realizar um git pull. Depois basta utilizar o comando docker-compose up na pasta notar-e-anotar-back-end que o docker subirá os dois containers da aplicação.

O deploy do backend e do banco de dados é feito de forma manual.

Acessamos a instância na AWS onde atualizamos o repositórios tanto do banco de dados quanto do backend.

Utilizando os arquivos Dockerfile presentes em cada repositório, rodamos o docker-compose.yaml que fará o deploy de ambos sistemas baseando-se nas configurações dos Dockerfiles.

Feito o deploy do docker-compose, o backend estará disponível no IP estático configurado para a instância da AWS.

Clone repository
  • Arquitetura do projeto
  • Banco de Dados
  • Configuração
  • Escopo do Projeto
  • Gerência de Projetos
  • Horários
  • Instalação
  • Manual da wiki
    • Adicionando imagens
    • Escrevendo em Markdown
    • Wiki no VS Code
  • Mockups desenvolvidos
  • Processos utilizados
  • Requisitos do projeto
  • Sprints do projeto
  • Home