project-test-thiago

Project Test


Keywords
project, test
License
Unlicense
Install
npm install project-test-thiago@2.0.0

Documentation

DBServer - Challenge

Projeto desafio da DBServer. O projeto e suas versões estão hospedados na OVH em uma pequena VPS, apenas para visualizar a aplicação rodando.

VPS

Aplicação / Versões

Foram desenvolvidas 4 versões independentes do projeto. Cada versão representa um modelo de aplicação e usa tecnologias que montam sua estrutura de acordo com a propósta da versão.

Como cada versão foi desenvolvida independente os pré-requisitos de cada uma é individual.

Todas aplicações tem "package.json" e também um arquivo em Bash que pode ser executado no terminal para instalar o aplicação. Todas aplicações também tem um gerenciador para manter o APP online, em uma foi usado o Forever e nas outras o PM2 apenas para exemplo.

Acesso

Versão Simples

Versão 1

Versão Clássica

Versão 2

Versão Moderna

Versão 3

Versão Avançada

Versão 4

API

API

Instalação

$ npm install

ou

$ bash install.sh

Rodar aplicação

Execução direta.

$ nodejs app.js

Executar com gerenciador.

$ forever app.js
$ pm2 app.js

ou

$ bash start.sh

Caracteristicas das Aplicações

O projeto requer sempre duas camadas, uma de API para entrada de dados e outra de saída de dados que é interface de aplicativo.

Servidor: no diretório "_server" tem um exemplo de script para efetuar a instalação de todos softwares e ferramentas que auxiliaram o desenvolvimento do projeto.

1 - Versão - Simples

Esta versão usa o mínimo possível de tecnologia para seu funcionamento, somente o Node.JS server-side instalado já é o suficiente para seu completo funcionamento. Foi desenvolvida com intuito de ser usada como modelo para aplicações IoT (Internet das Coisas), e poderia ser aplicada em um micro dispositivo no painel do caminhão que efetua o transporte das bebidas.

Sugestão: outro modelo interessante para essa aplicação seria o desenvolvimento em Node-RED.

2 - Versão - Clássica

Esta versão usa as tecnologias clássicas da Web 2.0 e não tem pretenção de ser inovadora, mas ser apenas um exemplo de um possível legado ao qual o desenvolvedor teria que efetuar manutenção. Para gerenciar os pacotes e bibliotecas server-side foi utilizado o NPM, e como CDN de front-side foi utilizado o UnPKG para download de bibliotecas de interface.

OBS: caso internet cair ou ocorrer algum erro a aplicação não restaura automáticamente, este modelo de aplicação esta em desuso.

Tecnologias e Bibliotecas / Server-Side:

Tecnologias e Bibliotecas / Front-Side:

3 - Versão - Moderna

Esta versão usa tecnologias mais modernas tanto para a montagem da interface como para comunicação de dados como Socket, que cria uma conexão server-side e front-side, é um exemplo de aplicação moderna e atual. Para gerenciar os pacotes e bibliotecas server-side foi utilizado o NPM, e como CDN de front-side foi utilizado o CDN JS Cloud Flare para download de bibliotecas de interface, e para montagem do compilar o SASS foi usado o Gulp.

IMPORTANTE: caso internet cair ou qualquer erro ocorra, a aplicação se restaura automaticamente após retorno por ser uma conexão Socket, é um modelo de aplicação atual e com boa tecnologia.

Tecnologias e Bibliotecas / Server-Side:

Tecnologias e Bibliotecas / Front-Side:

Testes Automatizados

Os testes foram disponibilizazdos no diretório "test" e podem ser executados de forma individual ou todos simultaneamente.

$ mocha test/app.js

Executar testes no aplicativo.

$ mocha test/app.js

Executar testes na API.

$ mocha test/app.js

Executar testes geral.

$ bash test/execute.sh

Tecnologias e Bibliotecas / Testes:

Instalar bibliotecas.

$ bash test/install.sh

4 - Versão - Avançada

Esta versão é quase uma cópia a versão 3, no entanto ela faz uso maquina virtual com Docker e base de indexação com ElasticSearch, mesmo o projeto tendo especificado que não seria necessário o uso de base de armazenamento de dados acredito que seria interessante pelo menos um modelo de aplicação escalonável.

IMPORTANTE: máquinas com Docker podem ser facilmente replicadas e o ElasticSearch tem sido uma das melhores bases de indexação e também uma das mais escalonáveis do mercado.

Tecnologias e Bibliotecas / Server-Side:

Tecnologias e Bibliotecas / Front-Side:

Testes Automatizados

Os testes foram disponibilizazdos no diretório "test" e podem ser executados de forma individual ou todos simultaneamente.

$ mocha test/app.js

Executar testes no aplicativo.

$ mocha test/app.js

Executar testes na API.

$ mocha test/app.js

Executar testes geral.

$ bash test/execute.sh

Tecnologias e Bibliotecas / Testes:

Instalar bibliotecas.

$ bash test/install.sh

5 - Nova Versão ou Melhoria - Versão - Mobile

A próxima versão seria o desenvolvimento de um APP mobile usando o IONIC (que roda independente do dispositivo mobile) para que a empresa pudesse replicar de forma simples a todos transportadores o controle de refrigeração da mercadoria. Também poderia ser feito empacotamento da versão Web para uma versão Desktop usando o ELECTRON JS

Tecnologias e Bibliotecas:

Esta versão poderia ter suporte aos requisitos:

  • Aviso (push) ao motorista no painel do caminhão.
  • Histórico de transporte.
  • Frota de caminhões.
  • Painel administrativo para controle de frota.
  • Tempo real controle de frota.
  • Mapa e rotas para entregas.
  • Sugestão da melhor rota de acordo com transito (comunicação com Waze).

Perguntas

Perguntas feitas ao Shane:

  • Pergunta: Qual melhor forma de ver a temperatura dos freezers durante o transporte, painel do caminhão ou celular ?

Shane: O painel pode tirar a atenção, mas um aviso poderia ser interessante, o celular poderia também ser visto durante a entrega e não apenas durante o transporte.

  • Pergunta: Você acredita que novos transportadores iriam acompanhar a temperatura dos freezers ?

Shane: Sim, é necessário para que a cerveja seja entregue da forma correta.

  • Pergunta: Qual sua maior dificuldade nas entregas ?

Shane: As cervejas se não estiverem na temperatura correta alguns Pubs não aceitam a entrega, e as vezes tenho que aguardar o temperatura ficar correta para concluir a entrega.

  • Pergunta: Como o aplicativo poderia ajudar nas entergas ?

Shane: Além do controle necessário da temperatura, o aplicativo também poderia sugerir melhor rota para efetuar as entregas.

  • Pergunta: Você utiliza algum aplicativo de mapa ?

Shane: Sim, uso Waze para ver o status do trânsito em tempo real.

Conclusão

O projeto foi muito legal de ser desenvolvido, é um desafio que apesar de não requerer grande quantidade de código pode ser muito expandido e a codificação pode ser feita e inúmeras formas.