Skip to content

Latest commit

 

History

History
200 lines (152 loc) · 6.61 KB

README.md

File metadata and controls

200 lines (152 loc) · 6.61 KB

Proagro Fácil

Este projeto implementa uma versão simplificada da comunicação com o sistema Proagro Fácil da empresa Softfocus.

A documentação da API implementada está sendo construída utilizando a ferramenta Postman. Você pode acessar a última versão através dest link. Você também pode acessar a documentação gerada automaticamente pelo FastAPI utilizando esse link.

Na próxima seção são apresentados os passos para rodar as aplicações front e back end localmente. No entanto, você também pode acessar o deploy da aplicação do Front End e do Back End.

Rodando o Projeto na sua máquina

Na sua máquina você deve ter:

  • Sistema Operacional Distribuição Unix
  • Node versão 16 (versão igual ou superior à 16.15.0 LTS)
  • Docker
  • Docker-compose versão >=1.29.2

A seguir você encontra um guia de como instalar e rodar o projeto localmente. Em caso de dúvidas, problemas ou feedbacks, entre em contato.

Passo 1. Crie o repositório local utilizando mkdir:

mkdir project-proagro-facil

Passo 2. Mude para o repositório criado:

cd project-proagro-facil

Passo 3. Clone o projeto:

git clone [email protected]:heitortessaro/proagro-facil.git

Passo 4. Mude para o diretório clonado:

cd proagro-facil

Passo 5. Inslate todas as dependências:

npm install

Passo 6. Mude para a pasta app:

cd app

Step 7. Rode os containers da aplicação

docker-compose up -d --build

Acessando a Aplicação Localmente

Depois de subir os container da aplicação, você pode acessar o front end utilizando o endereço http://localhost:3000.

Em funções da limitação de tempo no desenvolvimento, alguns pontos foram indicados na seção de Melhorias Futuras para esse projeto. Uma delas é a utilização de variáveis de ambiente no front end. No momento, se por alguma razão for necessário alterar a URL base para comunicação com a api, por favor, edite o arquivo app/frontend/src/services/baseURL.js.

Comandos Complementares

Caso você queira reiniciar a aplicação local, você pode desmontar os containers utilizando:

docker-compose down

E depois reiniciar a aplicação com:

docker-compose up -d --build

Tecnologias utilizadas

Na sequeência são listadas as principais tecnologias utilizadas para a implementação do projeto.

Front End

  • React: biblioteca JavaScript para construir interfaces de usuário.
  • Tailwind: estrutura CSS que fornece um catálogo classes e ferramentas CSS para facilitar a estilização da aplicação.

Back End

  • Fastapi: web framework para construir APIs com Python.
  • Uvicorn: é uma implementação de servidor web ASGI para Python.
  • Motor: é um driver Python assíncrono para interação com o MongoDB.
  • Pydantic: usado para a validação de dados e gerenciamento de configurações usando anotações de tipo em Python.
  • Geopy: biblioteca para obtenção e tratamentos de dados geográficos. Neste projeto, foi utilizada a função para calcular a distância entre duas coordenadas do globo.

Database

Para a implementação do banco de dados se utilizou o MongoDB, tomando proveito do serviço Atlas.

Organização

A seguir é apresentada a estrutura de pastas utilizada no front end:

src
 ┣ components
 ┃ ┣ Delete.jsx
 ┃ ┣ Navbar.jsx
 ┃ ┣ Register.jsx
 ┃ ┣ RegisterCard.jsx
 ┃ ┣ Search.jsx
 ┃ ┣ Select.jsx
 ┃ ┣ SelectService.jsx
 ┃ ┗ Update.jsx
 ┣ services
 ┃ ┣ fetches
 ┃ ┃ ┣ fakeResponse.js
 ┃ ┃ ┣ fetchAtualizacao.js
 ┃ ┃ ┣ fetchBuscaCpf.js
 ┃ ┃ ┣ fetchBuscaId.js
 ┃ ┃ ┣ fetchCadastro.js
 ┃ ┃ ┗ fetchDelete.js
 ┃ ┣ validations
 ┃ ┃ ┣ validateCPF.js
 ┃ ┃ ┣ validateCoordnates.js
 ┃ ┃ ┣ validateForms.js
 ┃ ┃ ┗ validateId.js
 ┃ ┣ baseURL.js
 ┃ ┗ eventTypes.js
 ┣ App.css
 ┣ App.js
 ┣ App.test.js
 ┣ index.css
 ┣ index.js
 ┣ reportWebVitals.js
 ┗ setupTests.js

A seguir é apresentada a estrutura de pastas do back end:

backend
 ┣ .pytest_cache
 ┃ ┣ v
 ┃ ┃ ┗ cache
 ┃ ┃ ┃ ┣ lastfailed
 ┃ ┃ ┃ ┣ nodeids
 ┃ ┃ ┃ ┗ stepwise
 ┃ ┣ .gitignore
 ┃ ┣ CACHEDIR.TAG
 ┃ ┗ README.md
 ┣ app
 ┃ ┣ model
 ┃ ┃ ┣ database.py
 ┃ ┃ ┗ proagro.py
 ┃ ┣ routes
 ┃ ┃ ┣ __init__.py
 ┃ ┃ ┣ ping.py
 ┃ ┃ ┗ register.py
 ┃ ┣ schemas
 ┃ ┃ ┗ proagro.py
 ┃ ┣ services
 ┃ ┃ ┣ __init__.py
 ┃ ┃ ┗ validations.py
 ┃ ┣ __init__.py
 ┃ ┗ main.py
 ┣ test
 ┃ ┣ __init__.py
 ┃ ┣ conftest.py
 ┃ ┗ test_main.py
 ┣ DEPLOY_Dockerfile.txt
 ┣ Dockerfile
 ┣ heroku.yml
 ┗ requirements.txt

Melhorias Futuras

Aqui são apresentadas possíveis melhorias que ainda não foram implementadas no projeto.

  • Utilizar variáveis de ambiente para definir a url da api para o front end e para fornecer a string de acesso ao banco de dados no back end.
  • Aprimorar a componentização do front end, principalmente para os componentes Update e Register.
  • Implementar testes unitários para font e back end.
  • Implementar testes E2E para o front e back end.
  • Adicionar um sistema de login e autenticação ao sistema. Uma opção seria utilizar JWT, de modo a liberar acesso as funcionalidades das rotas apenas a usuários autorizados.
    • Adicionar rota de login e criação de usuário.
  • Aprimorar a estrutura organizacional do back end
  • Aplicar conceitos SOLID em ambas as aplicações, front end e back end.

Referências Utilizadas

Além da documentação das técnologias previamente cidatas, também foram utilizados guias de implementação. Abaixo são listadas as referências utilizadas: