Skip to content

Plataforma web que simula a comunicação de perda em uma etapa para solicitação do Proagro (Programa de Garantia da Atividade Agropecuária).

Notifications You must be signed in to change notification settings

jvmuller/code-challenge-proagro

Repository files navigation

Proagro é um projeto planejado para ser uma versão simplificada da comunicação de perda que é uma das principais etapas para a solicitação do Proagro, onde o analista de Proagro irá informar os dados sobre o produtor rural, sobre a lavoura e sobre o evento que provocou a perda. E para que o produtor tenha o benefício aprovado, é muito importante que essas informações sejam preenchidas corretamente.

🔎 Sumário

Tecnologias

Esse projeto foi desenvolvido com as seguintes tecnologias:

  • Gitlab CI/CD para criação de pipelines e automação de processos
  • Docker para virtualizar as aplicações em containers
  • Nginx para servidor web e load balancer
  • React para framework frontend
  • MUI para componentes do frontend
  • Styled Components para estilização dos componentes
  • Typescript para trabalhar com React
  • Django para framework backend
  • Pytest para testes unitários e testes de integração do backend
  • Python para trabalhar com Django
  • AWS EC2 para hospedagem cloud da aplicação em docker

Projeto: Ambiente de Produção

O projeto do Proagro está hospedado em cloud pelo serviço da Amazon "AWS EC2" em uma instância t2.small, por isso é possível conferir o projeto sem a necessidade de executar em ambiente de desenvolvimento.

Para conferir o projeto online clique aqui.

Projeto: Ambiente de Desenvolvimento

O projeto do Proagro foi desenvolvido em containers Docker para facilitar a execução do projeto de uma forma que exija menos esforço para configurar e instalar o ambiente na máquina local.

O que preciso para executar o projeto?

Para executar esse projeto em ambiente local, você precisará das seguintes coisas obrigatoriamente:

  • Possuir o Git instalado na máquina para clonar o projeto (caso não tenha é possível fazer download em zip - não recomendado)
  • Possuir o Docker instalado em sua máquina (se estiver no windows, garanta que o serviço esteja executando em segundo plano)

Você também precisará configurar os hostnames em sua máquina, pois em ambiente local você só poderá acessar o site através de http://softfocus/.

No Windows, edite seu arquivo 'hosts' como administrador, que está em c:\Windows\System32\Drivers\etc\hosts.

No Linux, edite seu arquivo 'hosts' como sudo, que está em /etc/hosts. No Linux, pode ter chances de estar em outro diretório de acordo com sua distribuição usada.

No arquivo hosts, adicione a seguinte linha no final do arquivo (pode ser em qualquer linha em branco):

127.0.0.1   softfocus

Caso você esteja configurando o ambiente local para desenvolvimento, para melhor experiência com sua IDE, é recomendo:

  • Possuir o Python instalado na máquina e configurado como interpretador em sua de IDE de escolha
  • Possuir o Node.js instalado para utilização do gerenciador de pacotes npm

Como executar o projeto localmente

Para executar o projeto localmente garanta que sua máquina atende aos requisitos do projeto, feito isso realize o seguinte procedimento através de linha de comando - faça isso na pasta onde você queira deixar guardado o repositório.

# Caso o projeto esteja privado no Gitlab e você tenha chave ssh configurada no seu Gitlab. Ou caso o repositório esteja público.
$ git clone https://gitlab.com/jvmuller/softfocus.git
$ cd softfocus

# Caso o projeto esteja privado no Gitlab e você não tenha chave ssh configurada no seu Gitlab.
# Atenção: altere `ACCESS_TOKEN` pelo token que pode ser gerado em https://gitlab.com/-/profile/personal_access_tokens
$ git clone https://oauth2:ACCESS_TOKEN@gitlab.com/jvmuller/softfocus.git
$ cd softfocus

# Se você quer desenvolver localmente, faça isso antes. Caso queira apenas ver o projeto, ignore.
$ pip install -r ./backend/requirements.txt
$ cd frontend && npm install
$ cd ..

# Para subir o ambiente, execute o seguinte comando. E se caso queira parar o ambiente, utilize ctrl + c.
$ docker-compose up --build

# Para derrubar o ambiente, execute o seguinte comando.
$ docker-compose down -v

Executando os testes unitários no ambiente de desenvolvimento

Como nós utilizar o Docker, existem alguns passos para executar os testes unitários em ambiente de desenvolvimento.

Os comandos a seguir, devem serem executados por linha de comando a partir da raiz do projeto.

# Ignore o comando abaixo caso já esteja executando o projeto.
$ docker-compose up -d

# Só é necessário executar uma vez para instalar as bibliotecas necessárias para execução do pytest.
$ docker-compose exec backend pip install pytest-django pytest-cov

# Executa os testes unitários e de integração com pytest.
$ docker-compose exec backend pytest --cov-report term-missing --ds=core.settings --cov=.

Rotas de acesso do sistema

Atenção: Utilize o domínio softfocus.test.dev.br no ambiente de produção e softfocus no ambiente de desenvolvimento.

Descrição URL
Home page do sistema, mostra a quantidade de cadastros existentes http://softfocus/
Listagem das comunicações de perdas, acesso também para cadastro, edição e exclusão http://softfocus/comunicacao-de-perda/
Tela de cadastro de comunicação de perda http://softfocus/comunicacao-de-perda/cadastrar/
Edição de uma comunicação de perda específica, necessário informar id http://softfocus/comunicacao-de-perda/:id/
API: Tela da documentação de API RedDoc http://softfocus/api/v1/redoc/
API: Tela da documentação de API Swagger http://softfocus/api/v1/swagger/
API: Retorno do Swagger em JSON http://softfocus/api/v1/swagger.json

Demonstração: Gitlab

Aproveitando esse projeto, gostaria de mostrar um pouco dos recursos de CI/CD do Gitlab no qual trabalhei para mostrar um mínimo de conhecimento de DevOps que possuo feito nesse pequeno período.

Visualizando os testes unitários pelo Gitlab CI/CD

Como foi utilizado uma pipeline de CI/CD básica para execução do coverage, é possível visualizar a execução dos testes unitários pela própria interface do Gitlab seguindo os passsos abaixo.

Interface Gitlab
Interface Gitlab
Interface Gitlab

Visualizando o relatório de coverage

Interface Gitlab
Relatório de Coverage

Screenshots do sistema para demonstração

Home page com menu encolhido
Home page com menu estendido
Tela de listagem
Listagem com registro selecionado para exclusão
Listagem com marcação do botão de novo cadastro
Modal de confirmação para exclusão de registro selecionado
Notificação de exclusão
Tela de edição de uma comunicação de perda
Tela de cadastro de uma comunicação de perda
Tela de cadastro mostrando opções de eventos ocorridos
Documentação Swagger API
Documentação ReDoc API

About

Plataforma web que simula a comunicação de perda em uma etapa para solicitação do Proagro (Programa de Garantia da Atividade Agropecuária).

Resources

Stars

Watchers

Forks