[Proagro](http://softfocus.test.dev.br/)
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.
- Tecnologias
- Projeto: Ambiente de Produção
- Projeto: Ambiente de Desenvolvimento
- Rotas de acesso do sistema
- Demonstração: Gitlab
- Screenshots do sistema para demonstração
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
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.
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.
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
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
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=.
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 |
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.
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.