(86 revisões intermediárias por 7 usuários não estão sendo mostradas)
Linha 32: Linha 32:
** Aryanne Araújo - UberHub CodeClub
** Aryanne Araújo - UberHub CodeClub
* Devs:
* Devs:
** André Agel - UFU
** Antônio Pedro - UFU
** Antônio Pedro - UFU
** Rafael Nunes - UFU
** Danilo Dias - UFU
** Gabriel Nunes - UFU
** Hendrik Abdalla - UFU
** João Victor - UFU
** João Victor - UFU
** Victor Sisterolli Junior - UberHub CodeClub
<br>
<br>


Linha 43: Linha 45:


* Escopo: Desenvolver um sistema de controle de antibióticos que permita a gestão de antibióticos na âmbito da fundação provendo controle,  alarmes e comunicação do sistema com interfaces externas. A interação será via Smartphones e Desktops.
* Escopo: Desenvolver um sistema de controle de antibióticos que permita a gestão de antibióticos na âmbito da fundação provendo controle,  alarmes e comunicação do sistema com interfaces externas. A interação será via Smartphones e Desktops.
<br>
= Meetings =
* First meeting - 26/03/2020
** The project started by presenting the technologies that will be used for development in addition to observations about the system. Attached will be the presentation that was used on meeting.
** Presentation: [[Mídia: GAFio.pdf]]
<br>
<br>


Linha 51: Linha 59:
* No caso dessa aplicação, teremos uma visão das interfaces que serão construídas pelo Dev Front-End, sem preocupações estéticas mas com todas as operações que deverão constar na solução final.  
* No caso dessa aplicação, teremos uma visão das interfaces que serão construídas pelo Dev Front-End, sem preocupações estéticas mas com todas as operações que deverão constar na solução final.  
<br>
<br>
= GitHub =
https://github.com/gabrielrbernardi/gafio
= Requisitos Funcionais - Fase I =
*Backend
**RF01: Cadastrar usuário: '''Gabriel'''
***CRUD completo: campos -> nome, email, senha, confirmarSenha, matrícula, tipoUsuario
****tipoUsuario padrão -> Farmacêutico
****senha -> fazer hash da senha
**RF02: Autenticar usuário: '''Gabriel'''
***Verificação de usuário e senha
****Login via email
**RF03: Alimentar prontuários: <del>Bruno</del> '''Hendrik'''.
***CRUD completo de Prontuários
***<del>CRUD completo de Histórico.</del>
***Implementar Desfecho (alta, óbito ou transferência)
**RF04: Avaliação - '''Hendrik'''
***CRUD completo
****Paginação de avaliação de paciente quando mostrar dados paciente
**RF05: Cadastrar medicamentos: <del>André</del> '''Antônio'''
***CRUD - d
****Integração com api de medicamentos para inserção de dados no banco
****Implementar filtro para pesquisa de medicamentos
****Tentar colocar id primário como código de barras
**RF06: Cadastrar doenças: '''Antônio'''
***CRUD -d
****Integração api de doenças para inserção de dados no DB
****Implementar filtro para pesquisa de doenças
**RF07: Proteger API com protocolo OAuth: <del>André</del> '''Hendrik'''
***Evitar acesso de outros usuários à API
**RF08: Notificar aprovadores: <del>Bruno</del> '''Gabriel'''
***Criação de rota para autorização para acesso de novos usuários ao sistema.
**RF09: Verificar permissão de usuário: X
***Definir acesso de cada tipo de usuário.
**RF10: Gerar dashboard: '''A definir'''
***Visualização
***Disponibilização de dados para apresentação no frontend
**RF11: Cadastrar Paciente: '''Gabriel'''
*** Fazer backend para CRUD de paciente
**RF12: Cadastro Microbiologia: '''João Victor'''
*Frontend
**RF13: Criar tela de login
**RF14: Criar tela de cadastro de usuário
**RF15: Criar tela Home
**RF16: Criar tela de prontuário
***CRUD completo para prontuário
**RF17: Criar tela de medicamentos:
***CRUD -d para listagem de medicamentos
**RF18: Criar tela de doenças
***CRUD -d para listagem de doenças
**RF19: Mostrar dashboard
***Paginação entre os diversos gráficos. Integração de dados com a API REST do backend
**RF20: Mostrar Notificações
***Criacao de tela para exibição de notificações; Integração com API REST
**RF21: Criar easter egg
**RF22: Progressão de pacientes


= Requisitos Funcionais  =
<br>
<br>


* Back-End
= Requisitos Funcionais - Fase II =
** RF03: Criar CRUD
*Backend
** RF04: Criação dos endpoints para consumo CRUD
**RF23: Gerar dashboard: '''Antônio'''
** RF05: Criar autenticação de usuário
***Visualização
** RF06: Autenticação OAuth 2.0
***Disponibilização de dados para apresentação no Google DataStudio
** RF07: Documentação Final
**RF24: Incorporar PDF CCIH: '''A definir'''
**RF25: Gerar histórico: '''Antônio'''
***Gerar histórico por paciente
*Frontend
**RF26: Adicionar Yup: '''João Victor'''
***Adicionar Yup como método de validação
**RF27: Adicionar botão de reload
***Adicionar botão para recarregamento dos dados em cada datatable existente no sistema, para que não haja a necessidade de recarregar a página, e consequentemente o sistema.
**Incorporar Dashboard
***Fazer a incorporação dos gráficos gerados pelo Google DataStudio no sistema
 
= Rascunho =
* <del>Fazer backend para cadastro de paciente</del>
* <del>Refazer backend para historico de paciente</del>
* <del>Refazer backend para tabela de prontuário</del>
* Fazer função para desfecho do paciente -> Hendrik
** Verificar com FioCruz quais tipos de desfecho o paciente pode ter
* Criar cadastro de patógenos
* Para RF13, fazer a inclusão de arquivo PDF de exemplo para que futuramente possa ser substituido pelas recomendações da CCIH
 
https://www.notion.so/grbernardi/GAFio-d20305721c8d45e99fb7f8360707f010
 
*Morgan para arquivo de LOG
 
= Desenvolvimento =
 
*Responsáveis
{| class="wikitable"
|-
!RF!!Responsável!!Data prevista de entrega
|-
| RF01 || [[Gabriel Bernardi]] || 28/06/2020
|-
| RF02 || [[Gabriel Bernardi]] || 02/07/2020
|-
| RF03 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || 28/09/2020
|-
| RF04 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || 28/10/2020
|-
| RF05 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || 06/07/2020
|-
| RF06 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || 28/06/2020
|-
| RF07 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || -
|-
| RF08 || [[Gabriel Bernardi]] || 02/07/2020
|-
| RF09 || [[André Argel]] || 02/07/2020
|-
| RF10 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
| RF11 || [[Gabriel Bernardi]] || 25/06/2020
|-
| RF12 || [[João Victor]] || 11/11/2020
|-
| RF13 || [[Gabriel Bernardi]] || 25/06/2020
|-
| RF14 || [[Gabriel Bernardi]] || 13/07/2020
|-
| RF15 || [[Gabriel Bernardi]] || 20/07/2020
|-
| RF16 || [[Hendrik Abdalla Hermann | Hendrik Abdalla]] || 28/09/2020
|-
| RF17 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
| RF18 || [[Gabriel Bernardi]] || 02/07/2020
|-
| RF19 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
| RF20 || [[Gabriel Bernardi]] || -
|-
| RF21 || - || -
|-
| RF22 || - || -
|-
| RF23 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || -
|-
| RF24 || - || -
|-
| RF25 || [[Antônio Pedro Rodrigues Santos | Antônio Pedro]] || 16/11/2020
|-
| RF26 || [[João Victor]] || 11/11/2020
|-
 
|}
 
= Non-Functional Requirements =
<br>
<br>


* Front-End
* RF01: Create the Data Base
** RF08: Criação das entidades básicas
* RF02: Create tables
** RF09: Criação das funcionalidades CRUD
* RF03: Create the final documentation for back-end
** RF10: Criação do Dashboard
* RF04: Create the final documentation for front-end
** RF11: Criar autenticação de usuário
 
** RF12: Documentação Final
= Tools to be used =
<br>
<br>


= Requisitos Não-Funcionais =
*Back-End
** MySql
*** MySql é um SGBD que permite manipulação de dados em alta capacidade. Foi escolhido pelos seguintes critérios: free e open-source, grande base de usuários com conhecimento e fácil de instalar. Grande comunidade atuante. Por ser relacional, facilitará a implementação por parte da equipe.
** NodeJS
***NodeJs é um ambiente de execução Javascript server-side, ou seja, é uma ferramenta que permite criar aplicações javascript sem depender de um browser para a execução. Alguns motivos de sua adoção são: alta escalabilidade, possui o maior repositório do mundo com NPM, possibilidade de deploys e iterações mais rápidas e claro sua notoriedade no mercado sendo utilizado em grandes empresas como Netflix, Uber e LinkedIn.
** ORM (Sequelize)
***ORM (Object Relational Mapper) é uma técnica usada para aproximar o paradigma do banco de dados relacional com linguagem SQL ao paradigma de aplicações orientadas a objetos. Essa aproximação deixa a interação com o banco de dados mais amigável ao programador. A ferramenta que será utilizada é o Sequelize e foi escolhido por que possui uma otina comunicação com o MySql além de estar incluso no repositório NPM.
** ExpressJS
***O ExpressJs é o framework Node mais popular para web. Essa ferramenta auxilia muito na construção de uma API com caminhos URL (routes), middlewares, etc. O ExpressJs foi escolhido pela praticidade que promove e também por ser o framework mais popular da nossa ferramenta NodeJS, o que consequentemente nos traz uma maior quantidade de material disponível para pesquisa.
** BCrypt
***Bcrypt é uma ferramenta para guardar senhas de forma criptografada no banco aumentando a segurança contra ataques de força bruta. Uma das vantagens do Bcrypt é que mesmo duas senhas identicas produzem hash diferentes. Essa ferramente foi escolhida pela grande quantidade de material online para pesquisa e também porque trabalha muito bem como Nodejs.
** JWT
***JWT (JSON Web Tokens) é uma ferramenta que gera tokens codificados com tempo limitado para confirmar a autenticidade do usuário, sendo muito importante para segurança e controle sobre sobre quem esta utilizando o sistema. Esta ferramenta foi escolhida por sua facil integração ao Node e também por ter uma comunidade ativa em fóruns e sites para possíveis duvidas.
** Docker
***Docker  resumidamente é uma plataforma open source que facilita a criação e administração de ambientes isolados. Essa ferramente possibilita empacotar uma aplicação ou ambiente inteiro em um container tornando-o portável para qualquer host que tenha o docker instalado, ou seja, nada de “na minha maquina roda e não sua não”. Essa ferramenta foi escolhida pois reduz drasticamente o tempo de deploy de uma aplicação, possui uma portabilidade que permite uma aplicação ser facilmente executada em um ambiente de produção e homologação e ainda  possui uma comunidade enorme, sempre ativa e de fácil acesso.
** Git
***Git é um sistema open source de controle de versão que facilita o desenvolvimento de projetos em grupo. Imagine um cenário em que duas pessoas estão desenvolvendo um mesmo projeto e cada uma altera uma parte do código. Para juntar essas duas  partes sem o git seria terrível. Essa ferramenta é sem duvidas o que torna viável um projeto ter dezenas e até centenas de desenvolvedores trabalhando em um mesmo projeto. Nesse projeto utilizaremos o github como serviço web do git. Escolhemos o github pois é sem duvidas o maior deposito online de trabalho colaborativo do mundo o que indica que também é o que possui a maior comunidade ativa para estudos e duvidas.
<br>
<br>


** RF01: Criar Banco de Dados
*Front-End
** RF02: Criar tabelas
** ReactJS
***React é uma biblioteca Javascript declarativa, eficiente e flexível para a criação de interfaces de usuário (UI). O React foi escolhido para esse projeto pelo simples motivo de ser uma das ferramentas frontend mais usadas no mercado, portando é uma excelente oportunidade para quem está começando a carreira de engajar em uma tecnologia emergente.
** Axios
***Axios é uma biblioteca cujo proposito é simplesmente fazer requisições ajax (operações assíncronas) em nossa aplicação web. Essa biblioteca também permite fazer as mesmas requisições feitas em ajax no browser no servidor com o mesmo código,  o que facilita na integração do frontend com o backend da nossa aplicação. O proposito da escolha dessa lib é que a mesma é muito pequena e leve alem de ter uma implementação muito simples e também possui compatibilidade com diversos browsers diferentes.
<br>


= Ferramentas a serem utilizadas =
= Materials to be used =
<br>
<br>


*BACKEND
*Back-End
** MySql
** MySql
*** W3Schools (English): https://www.w3schools.com/sql/default.asp
*** MySQL Tutorial (English): https://www.mysqltutorial.org/basic-mysql-tutorial.aspx
*** TutorialsPonit (English): https://www.tutorialspoint.com/mysql/mysql-administration.htm
*** Curso em Vídeo (Portuguese): https://www.youtube.com/playlist?list=PLHz_AreHm4dkBs-795Dsgvau_ekxg8g1r
** NodeJS
** NodeJS
** ORM
*** W3Schools (English): https://www.w3schools.com/nodejs/default.asp
*** NodeJS official documentation (English): https://nodejs.org/en/docs/guides/
*** API NodeJS (Portuguese): https://www.youtube.com/playlist?list=PL85ITvJ7FLoiXVwHXeOsOuVppGbBzo2dp
**** Observation: Although the database it's be MongoDB, it's worth getting sense of how to build an API
** ORM (Sequelize)
*** This tool should to be used with NodeJS and relational Database.
*** Sequelize official documentation (English): https://sequelize.org/
*** Configurando o Sequelize no NodeJS com o ExpressJS (Portuguese): https://blog.rocketseat.com.br/nodejs-express-sequelize/
** ExpressJS
** ExpressJS
*** Official guide for ExpressJS (English): https://expressjs.com/en/guide/routing.html
*** Medium: Setup a REST API with Sequelize and ExpressJS (English): https://medium.com/valtech-ch/setup-a-rest-api-with-sequelize-and-express-js-fae06d08c0a7
*** Buildin a REST API with MySQL, NodeJS and ExpressJS (English): https://bezkoder.com/node-js-rest-api-express-mysql/
*** Creating RESTful CRUD API with MySQL, NodeJS and ExpressJS (English): https://www.tutsmake.com/node-express-js-creating-a-restful-crud-api-with-mysql/
** BCrypt
** BCrypt
*** NPM documentation for NodeJS (English): https://www.npmjs.com/package/bcrypt
*** Wikipedia article of BCrypt (English): https://en.wikipedia.org/wiki/Bcrypt
** JWT
** JWT
*** An implementation of Json Web Token for NodeJS (English): https://www.npmjs.com/package/jsonwebtoken
*** A simple version of Json Web Token (English): https://www.npmjs.com/package/jwt-simple
*** Official website and online tester for created Tokens (English): https://jwt.io/
** Docker
** Docker
***
** Git
** Git
*** Don't be afraid to commit (English): https://dont-be-afraid-to-commit.readthedocs.io/en/latest/git/commandlinegit.html
*** Create repository and learn more of GitHub (English): https://guides.github.com/activities/hello-world/
*** Add multiple files at same time on Git (English): https://stackoverflow.com/questions/19576116/how-to-add-multiple-files-to-git-at-the-same-time
<br>
<br>


*FRONTEND
*Front-End
** ReactJS
** ReactJS
*** ReactJS official tutorial (Portuguese and English): https://pt-br.reactjs.org/tutorial/tutorial.html
*** Rocketseat playlist to learn ReactJS (Portuguese): https://www.youtube.com/playlist?list=PL85ITvJ7FLoiuaKgHFYgrhZDwXOUEaxWI
** Axios
** Axios
** JWT
*** NPM documentation for axios library (English): https://www.npmjs.com/package/axios
** GIT
*** Github page for axios (English): https://github.com/axios/axios
*** Using axios with React (English): https://alligator.io/react/axios-react/
*** Making requests for API through axios (Portuguese): https://www.youtube.com/watch?v=d7bKeG9hb-0
<br>
<br>

Edição atual tal como às 16h16min de 7 de janeiro de 2021

Parceria

  • FioCruz
    • Fundação Oswaldo Cruz é uma instituição de pesquisa e desenvolvimento em ciências biológicas localizada no Rio de Janeiro, Brasil, considerada uma das principais instituições mundiais de pesquisa em saúde pública. Foi fundada pelo Dr. Oswaldo Cruz, um notável epidemiologista, onde antes era o Instituto Soroterápico Federal.
    • Endereço: Av. Brasil, 4365 - Manguinhos, Rio de Janeiro - RJ, 21040-900
    • Fundador: Osvaldo Cruz
    • Fundação: 25 de maio de 1900
    • INI - Instituto Nacional de Infectologia
    • Pesquisadores:
      • Dr André Miguel Japiassú
        • Área de conhecimento: Biologia Geral
      • Dr Pedro Henrique Nascimento Theodoro
        • Área de conhecimento: Infectologia


  • UFU
    • A Universidade Federal de Uberlândia (UFU) é uma fundação pública, integrante da Administração Federal Indireta, vinculada ao Ministério da Educação (MEC). A instituição, ainda com o nome de Universidade de Uberlândia (UnU), foi autorizada a funcionar pelo Decreto-lei n. 762, de 14 de agosto de 1969, e federalizada pela Lei n. 6.532, de 24 de maio de 1978.
    • A Universidade Federal de Uberlândia foi fundada em 1969, com a associação de diversas faculdades isoladas como a Faculdade de Engenharia, a Escola de Medicina, entre outras. Em 1978 ocorreu sua federalização, ocasião em que sua organização acadêmica e administrativa foi estruturada em três centros: Centro de Ciências Exatas e Tecnologia, CETEC; Centro de Ciências Humanas e Artes, CEHAR; e Centro de Ciências Biológicas, CEBIM.
    • A Faculdade de Computação (FACOM) da Universidade Federal de Uberlândia foi criada em 2000, a partir do extinto Departamento de Informática (DEINF), criado em 1988, no âmbito do CETEC, com docentes provenientes dos departamentos de Engenharia Elétrica e de Matemática. As atividades acadêmicas do DEINF estiveram intimamente ligadas ao desenvolvimento do Curso de Bacharelado em Ciência da Computação (BCC), criado também em 1988, sendo este curso o marco inicial da FACOM. No início dos anos 2000 foi criado na Faculdade o Programa de Pós-Graduação em Ciência da Computação, inicialmente com o curso de Mestrado Acadêmico. A FACOM continuou sua expansão criando em 2009 o Curso de Bacharelado em Sistema de Informação (BSI) no Campus Santa Mônica, em Uberlândia e, em 2010, no Campus de Monte Carmelo. No ano de 2011 foi aprovado pela CAPES o Curso de Doutorado em Ciência da Computação, em reconhecimento a destacada produção científica da FACOM em diversas áreas da computação.


Equipe


  • Stakeholder: André Miguel Japiassu - Fiocruz
  • Software Engineer: Luiz Cláudio Theodoro - UFU
  • PO - Product Owner: Pedro Henrique Nascimento Theodoro - Fiocruz
  • Scrums Masters:
    • Bruno Sinhoroto - UFU
    • Gabriel Bernardi - UFU
    • Maxley Soares - UFU
  • Designer:
    • Aryanne Araújo - UberHub CodeClub
  • Devs:
    • André Agel - UFU
    • Antônio Pedro - UFU
    • Danilo Dias - UFU
    • Gabriel Nunes - UFU
    • Hendrik Abdalla - UFU
    • João Victor - UFU



  • Escopo: Desenvolver um sistema de controle de antibióticos que permita a gestão de antibióticos na âmbito da fundação provendo controle, alarmes e comunicação do sistema com interfaces externas. A interação será via Smartphones e Desktops.


Meetings

  • First meeting - 26/03/2020
    • The project started by presenting the technologies that will be used for development in addition to observations about the system. Attached will be the presentation that was used on meeting.
    • Presentation: Mídia: GAFio.pdf


Mockup


  • Mockup ou mock-up, é um modelo em escala ou de tamanho real de um projeto ou dispositivo, usado para ensino, demonstração, avaliação de design, promoção e outros propósitos
  • No caso dessa aplicação, teremos uma visão das interfaces que serão construídas pelo Dev Front-End, sem preocupações estéticas mas com todas as operações que deverão constar na solução final.


GitHub

https://github.com/gabrielrbernardi/gafio

Requisitos Funcionais - Fase I

  • Backend
    • RF01: Cadastrar usuário: Gabriel
      • CRUD completo: campos -> nome, email, senha, confirmarSenha, matrícula, tipoUsuario
        • tipoUsuario padrão -> Farmacêutico
        • senha -> fazer hash da senha
    • RF02: Autenticar usuário: Gabriel
      • Verificação de usuário e senha
        • Login via email
    • RF03: Alimentar prontuários: Bruno Hendrik.
      • CRUD completo de Prontuários
      • CRUD completo de Histórico.
      • Implementar Desfecho (alta, óbito ou transferência)
    • RF04: Avaliação - Hendrik
      • CRUD completo
        • Paginação de avaliação de paciente quando mostrar dados paciente
    • RF05: Cadastrar medicamentos: André Antônio
      • CRUD - d
        • Integração com api de medicamentos para inserção de dados no banco
        • Implementar filtro para pesquisa de medicamentos
        • Tentar colocar id primário como código de barras
    • RF06: Cadastrar doenças: Antônio
      • CRUD -d
        • Integração api de doenças para inserção de dados no DB
        • Implementar filtro para pesquisa de doenças
    • RF07: Proteger API com protocolo OAuth: André Hendrik
      • Evitar acesso de outros usuários à API
    • RF08: Notificar aprovadores: Bruno Gabriel
      • Criação de rota para autorização para acesso de novos usuários ao sistema.
    • RF09: Verificar permissão de usuário: X
      • Definir acesso de cada tipo de usuário.
    • RF10: Gerar dashboard: A definir
      • Visualização
      • Disponibilização de dados para apresentação no frontend
    • RF11: Cadastrar Paciente: Gabriel
      • Fazer backend para CRUD de paciente
    • RF12: Cadastro Microbiologia: João Victor
  • Frontend
    • RF13: Criar tela de login
    • RF14: Criar tela de cadastro de usuário
    • RF15: Criar tela Home
    • RF16: Criar tela de prontuário
      • CRUD completo para prontuário
    • RF17: Criar tela de medicamentos:
      • CRUD -d para listagem de medicamentos
    • RF18: Criar tela de doenças
      • CRUD -d para listagem de doenças
    • RF19: Mostrar dashboard
      • Paginação entre os diversos gráficos. Integração de dados com a API REST do backend
    • RF20: Mostrar Notificações
      • Criacao de tela para exibição de notificações; Integração com API REST
    • RF21: Criar easter egg
    • RF22: Progressão de pacientes


Requisitos Funcionais - Fase II

  • Backend
    • RF23: Gerar dashboard: Antônio
      • Visualização
      • Disponibilização de dados para apresentação no Google DataStudio
    • RF24: Incorporar PDF CCIH: A definir
    • RF25: Gerar histórico: Antônio
      • Gerar histórico por paciente
  • Frontend
    • RF26: Adicionar Yup: João Victor
      • Adicionar Yup como método de validação
    • RF27: Adicionar botão de reload
      • Adicionar botão para recarregamento dos dados em cada datatable existente no sistema, para que não haja a necessidade de recarregar a página, e consequentemente o sistema.
    • Incorporar Dashboard
      • Fazer a incorporação dos gráficos gerados pelo Google DataStudio no sistema

Rascunho

  • Fazer backend para cadastro de paciente
  • Refazer backend para historico de paciente
  • Refazer backend para tabela de prontuário
  • Fazer função para desfecho do paciente -> Hendrik
    • Verificar com FioCruz quais tipos de desfecho o paciente pode ter
  • Criar cadastro de patógenos
  • Para RF13, fazer a inclusão de arquivo PDF de exemplo para que futuramente possa ser substituido pelas recomendações da CCIH

https://www.notion.so/grbernardi/GAFio-d20305721c8d45e99fb7f8360707f010

  • Morgan para arquivo de LOG

Desenvolvimento

  • Responsáveis
RF Responsável Data prevista de entrega
RF01 Gabriel Bernardi 28/06/2020
RF02 Gabriel Bernardi 02/07/2020
RF03 Hendrik Abdalla 28/09/2020
RF04 Hendrik Abdalla 28/10/2020
RF05 Antônio Pedro 06/07/2020
RF06 Antônio Pedro 28/06/2020
RF07 Hendrik Abdalla -
RF08 Gabriel Bernardi 02/07/2020
RF09 André Argel 02/07/2020
RF10 Antônio Pedro -
RF11 Gabriel Bernardi 25/06/2020
RF12 João Victor 11/11/2020
RF13 Gabriel Bernardi 25/06/2020
RF14 Gabriel Bernardi 13/07/2020
RF15 Gabriel Bernardi 20/07/2020
RF16 Hendrik Abdalla 28/09/2020
RF17 Antônio Pedro -
RF18 Gabriel Bernardi 02/07/2020
RF19 Antônio Pedro -
RF20 Gabriel Bernardi -
RF21 - -
RF22 - -
RF23 Antônio Pedro -
RF24 - -
RF25 Antônio Pedro 16/11/2020
RF26 João Victor 11/11/2020

Non-Functional Requirements


  • RF01: Create the Data Base
  • RF02: Create tables
  • RF03: Create the final documentation for back-end
  • RF04: Create the final documentation for front-end

Tools to be used


  • Back-End
    • MySql
      • MySql é um SGBD que permite manipulação de dados em alta capacidade. Foi escolhido pelos seguintes critérios: free e open-source, grande base de usuários com conhecimento e fácil de instalar. Grande comunidade atuante. Por ser relacional, facilitará a implementação por parte da equipe.
    • NodeJS
      • NodeJs é um ambiente de execução Javascript server-side, ou seja, é uma ferramenta que permite criar aplicações javascript sem depender de um browser para a execução. Alguns motivos de sua adoção são: alta escalabilidade, possui o maior repositório do mundo com NPM, possibilidade de deploys e iterações mais rápidas e claro sua notoriedade no mercado sendo utilizado em grandes empresas como Netflix, Uber e LinkedIn.
    • ORM (Sequelize)
      • ORM (Object Relational Mapper) é uma técnica usada para aproximar o paradigma do banco de dados relacional com linguagem SQL ao paradigma de aplicações orientadas a objetos. Essa aproximação deixa a interação com o banco de dados mais amigável ao programador. A ferramenta que será utilizada é o Sequelize e foi escolhido por que possui uma otina comunicação com o MySql além de estar incluso no repositório NPM.
    • ExpressJS
      • O ExpressJs é o framework Node mais popular para web. Essa ferramenta auxilia muito na construção de uma API com caminhos URL (routes), middlewares, etc. O ExpressJs foi escolhido pela praticidade que promove e também por ser o framework mais popular da nossa ferramenta NodeJS, o que consequentemente nos traz uma maior quantidade de material disponível para pesquisa.
    • BCrypt
      • Bcrypt é uma ferramenta para guardar senhas de forma criptografada no banco aumentando a segurança contra ataques de força bruta. Uma das vantagens do Bcrypt é que mesmo duas senhas identicas produzem hash diferentes. Essa ferramente foi escolhida pela grande quantidade de material online para pesquisa e também porque trabalha muito bem como Nodejs.
    • JWT
      • JWT (JSON Web Tokens) é uma ferramenta que gera tokens codificados com tempo limitado para confirmar a autenticidade do usuário, sendo muito importante para segurança e controle sobre sobre quem esta utilizando o sistema. Esta ferramenta foi escolhida por sua facil integração ao Node e também por ter uma comunidade ativa em fóruns e sites para possíveis duvidas.
    • Docker
      • Docker resumidamente é uma plataforma open source que facilita a criação e administração de ambientes isolados. Essa ferramente possibilita empacotar uma aplicação ou ambiente inteiro em um container tornando-o portável para qualquer host que tenha o docker instalado, ou seja, nada de “na minha maquina roda e não sua não”. Essa ferramenta foi escolhida pois reduz drasticamente o tempo de deploy de uma aplicação, possui uma portabilidade que permite uma aplicação ser facilmente executada em um ambiente de produção e homologação e ainda possui uma comunidade enorme, sempre ativa e de fácil acesso.
    • Git
      • Git é um sistema open source de controle de versão que facilita o desenvolvimento de projetos em grupo. Imagine um cenário em que duas pessoas estão desenvolvendo um mesmo projeto e cada uma altera uma parte do código. Para juntar essas duas partes sem o git seria terrível. Essa ferramenta é sem duvidas o que torna viável um projeto ter dezenas e até centenas de desenvolvedores trabalhando em um mesmo projeto. Nesse projeto utilizaremos o github como serviço web do git. Escolhemos o github pois é sem duvidas o maior deposito online de trabalho colaborativo do mundo o que indica que também é o que possui a maior comunidade ativa para estudos e duvidas.


  • Front-End
    • ReactJS
      • React é uma biblioteca Javascript declarativa, eficiente e flexível para a criação de interfaces de usuário (UI). O React foi escolhido para esse projeto pelo simples motivo de ser uma das ferramentas frontend mais usadas no mercado, portando é uma excelente oportunidade para quem está começando a carreira de engajar em uma tecnologia emergente.
    • Axios
      • Axios é uma biblioteca cujo proposito é simplesmente fazer requisições ajax (operações assíncronas) em nossa aplicação web. Essa biblioteca também permite fazer as mesmas requisições feitas em ajax no browser no servidor com o mesmo código, o que facilita na integração do frontend com o backend da nossa aplicação. O proposito da escolha dessa lib é que a mesma é muito pequena e leve alem de ter uma implementação muito simples e também possui compatibilidade com diversos browsers diferentes.


Materials to be used