Home | Sprints | Requisitos | Arquitetura | Configuração | Mockups | Banco de Dados | Instalação | Gerência de Projeto | CI |
---|
Página de Configuração do Projeto
Back-end (API)
A configuração de cada ambiente está no config/environments/<env>.js
. Para desenvolvimento vamos utilizar o arquivo config/environments/development.js
. Nele esta configurado para subir a aplicação na porta 3000
e utilizar o MongoDB com a seguinte config:
username: "admin",
password: "p1c4d1nh0",
database: "dev"
Requisitos
Será necessário ter em sua máquina:
Configurando MongoDB
Docker
- Na raiz do repositório existe um arquivo chamado
docker-compose.yml
. Com ele é possível subir uma instancia do MongoDB, já configurada para ser utilizada localmente. Para isso é preciso ter instalado o Docker em sua máquina (Linux ou Windows). Com o Docker rodando, o seguinte comando pode ser executadodocker-compose up -d
Após isto o MongoDB já estará rodando.
Sem Docker - Para os que tiverem problemas com o Windows Home
- Também é possível utilizar o MongoDB localmente. Para isto basta configurar o usuário e senha de acordo com o env do projeto.
- Deve-se instalar o MongoDB localmente na máquina através do link: https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-4.4.1-signed.msi
- No cmd digitar 'cd C:\Program Files\MongoDB\Server\4.4\bin\mongo.exe' O mongodb deve se conectar. Verificar em qual porta está conectado o mongo. No meu caso foi a 27017
- Digitar o comando 'use admin'
- Digitar o comando para adicionar usuário 'db.createUser( { user: "admin", pwd: "p1c4d1nh0", roles: [ { role: "dbOwner", db: "dev" } ] } )'
- No MongoDB Compass adicionar uma conexão como segue: Hostname: localhost Port: 27017 (vai depender de qual porta o mongo está conectado) Authentication: username/password Username: admin Password: p1c4d1nh0 Authentication Database: admin
- Após esses passos é possível iniciar o back.
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/
Dependências
Para que todas as dependências do projeto sejam instaladas pode ser utilizado o gerenciador de pacotes NPM.
Com o repositório clonado, navegue até o a pasta raiz do projeto, e execute, npm install
.
Rodando
Depois das devidas configurações, basta executar o seguinte comando para rodar o projeto, npm run dev
.
Swagger e docs
O projeto conta com um middleware do Swagger para automaticamente documentar as rotas desenvolvidas. Para visualiza-lo, com o projeto em execução, basta acessar http://localhost:3000/api/docs
.
Carregando as manutenções da URL para o arquivo Json
Rodar comando '& python ./scriptCarService.py' que gera o arquivo em json scheduledMaintenancesInitialPayload.json
Carregando as manutenções da Chevrolet para banco local
Depois das devidas configurações, e de adicionar informações dos carros no banco, preferencialmente pelo front-end(CASO ADICIONE PELO SWAGGER, USAR LETRAS MAIUSCULAS). Ex: "brand":"CHEVROLET" "model":"ONIX" Após ter os veículos adicionados no contexto da gerência, rodar o comando para iniciar o script seeds.js na branch develop: 'npm run seed'.
Para rodar o script no Heroku, deve-se aceder a branch seedToProd, que contém os apontamentos para o nosso BD de produção. Para isso é necessário rodar o mesmo script: 'npm run seed'
Front-end (Oficina)
Para executar o projeto é necessário ter o Flutter já instalado na sua máquina. O tutorial para a instalação está disponível na documentação oficial do toolkit. A versão utilizada para o desenvolvimento inicial foi a:
Flutter 1.22.0-10.0.pre.161
Assim que você clonar o projeto, inicie o projeto com o comando:
flutter run -d chrome
.
O comando acima informa ao flutter que você executará a aplicação em um navegador.
Notificações
O projeto utiliza o serviço de Cloud Messaging do Firebase para enviar push notifications aos usuários. Para isso, foi criado uma conta com os dados:
- email: [email protected]
- senha: onyva2020
Ponto de atenção
O projeto possui rotas que permite o envio de notificação para múltiplos usuários. Porém, o serviço do Firebase possui uma limitação de 500 usuários por notificação. Em fase de desenvolvimento e testes isso não é um problema, porém quando em produção, isso pode causar erros. Uma possível solução é dividir os usuários alvos em grupos de 500 e chamar o serviço de notificação para cada grupo.
Notificação mensal
O sistema possui uma notificação mensal, onde pede-se ao usuário proprietário que ele atualize a kilometragem do veículo. O dia do mês e o horário dessa notificação são definidos através de uma expressão cron no arquivo schedulerOperation.js, no projeto de back-end. Aqui está um guia para expressões cron
Deploy Flutter Web no Heroku:
IMPORTANTE
Os conteúdos do projeto (pubspec.yml, pasta de build, arquivos fonte e afins) devem estar no mesmo diretório onde está a pasta .git do seu projeto. Caso contrário você terá erro no deploy.
-
Instale o CLI do Heroku:
user$ sudo snap install --classic heroku
-
Entre no diretório do seu projeto onde estiver localizada a pasta ".git". Ela será referência para o Heroku saber qual branch e de qual repositório será realizado o deploy.
-
Crie uma conta no Heroku. www.heroku.com
-
Quando sua conta estiver ok, crie um app e entre nas configurações.
-
Vá na aba 'Deploy' e siga o pequeno tutorial no fim da página indicado como 'Deploy using Heroku Git'.
-
Execute os comandos abaixo como pede o tutorial, mas atenção ao executar o último:
$ git add .
$ git commit -am "alguma mensagem"
$ git push heroku master
O Heroku CLI vai reclamar de não ter encontrado um buildpack padrão para esse tipo de aplicação. Adicione um buildpack da sua preferência para o Flutter ou utilize esse comando:
$ heroku buildpacks:set diezep/flutter -a <nome-da-sua-aplicacao>
Fonte do buildpack: https://github.com/diezep/heroku-buildpack-flutter
- Agora você vai buildar sua aplicação:
$ flutter build web
Ao término da execução você deve ver uma pasta "build" e dentro dela outra pasta com "web". Esses arquivos serão enviados ao Heroku. Verifique sempre sua branch antes de enviar o build, pois se estiver numa branch desatualizada ou que faça comunicação local com banco de dados/API a aplicação não vai funcionar corretamente.
- Depois do build, insira o comando:
$ git push heroku development:main
Se deseja enviar a branch development para testar o deploy utilize o comando acima. Se sua branch chama alastor
, troque por:
git push heroku alastor:main
Se deseja enviar o deploy de outra branch, troque para:
git push heroku <branch>:main
Se a versão enviada para o Heroku não for a correta, a sugestão é excluir a pasta "build" e tentar novamente o comando de build.
$ flutter build web
Depois tente novamente o comando de push com a branch desejada.
Dicas
Caso seu projeto não esteja rodando corretamente, siga esses passos:
- Já verificou os imports do projeto? (arquivo
pubspec.yml
) - Sua classe está exportada corretamente?
- Você adicionou algum pacote que tenha problemas de nomenclatura com outros pacotes?
Se você já verificou tudo isso, tente esse comando:
flutter packages get