|[Home](home)|[Sprints](sprints)|[Requisitos](requisitos)|[Arquitetura](arquitetura)|[Configuração](configuracao)|[Mockups](mockups)|[Banco de Dados](banco_dados)|[Instalação](instalacao)|[Gerência de Projeto](gp)|[CI](ci)| |---|---|---|---|---|---|---|---|---|---| # Página de Configuração do Projeto ## Back-end (API) A configuração de cada ambiente está no `config/environments/.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: - [Node](https://nodejs.org/en/). - [Docker ](https://www.docker.com/) ou [MongoDB ](https://www.mongodb.com/) local. ### Configurando MongoDB #### [Docker](https://docs.docker.com/compose/) - 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 executado ` docker-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. 1. 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 2. 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 3. Digitar o comando 'use admin' 4. Digitar o comando para adicionar usuário 'db.createUser( { user: "admin", pwd: "p1c4d1nh0", roles: [ { role: "dbOwner", db: "dev" } ] } )' 5. 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 6. 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](https://nodejs.org/en/knowledge/getting-started/npm/what-is-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: contato.onyva@gmail.com - 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](https://www.baeldung.com/cron-expressions) ## 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.``` 1. Instale o CLI do Heroku: ```user$ sudo snap install --classic heroku``` 2. 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. 3. Crie uma conta no Heroku. www.heroku.com 4. Quando sua conta estiver ok, crie um app e entre nas configurações. 5. Vá na aba 'Deploy' e siga o pequeno tutorial no fim da página indicado como 'Deploy using Heroku Git'. 6. 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 Fonte do buildpack: https://github.com/diezep/heroku-buildpack-flutter 7. 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. 8. 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 :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```