Trata-se de uma aplicação para gerenciamento de encomendas/delivery para uma distribuidora ficitícia, a FastFeet.
O gerenciamento é todo feito pela interface web, enquanto os entregadores utilizam uma aplicação mobile para visualizar as encomendas pedentes, as já finalizadas, informar um problema e confirmar uma entrega.
“A sabedoria é a coisa principal; adquire pois a sabedoria, emprega tudo o que possuis na aquisição de entendimento.” (Provérbios 4:7)”
A aplicação faz parte do Desafio Final do Bootcamp da Rocketseat. Esse código corresponde ao desafio completo, incluindo o backend, frontend e app mobile do Fastfeet.
- Autenticação utilizando JSON Web Token (JWT);
- Validação dos dados de entrada;
- Gestão de destinatários;
- Gestão de entregadores;
- Gestão de encomendas;
- Gerenciamento dos problemas de entrega;
- O entregador pode informar um problema pelo app mobile;
- Controle do horário para retirada das encomendas;
- Após a entrega, o entregador tira uma foto da assinatura do destinaráriopara comprovar a entrega
Esse projeto foi desenvolvido com as seguintes tecnologias:
- Node.js
- Express.js
- Docker
- Docker Compose
- Sequelize
- PostgreSQL
- MongoDB
- Nodemailer
- Handlebars
- Redis
- Bee-Queue
- React
- React-Native
- React-Redux
- Redux-Saga
Faça um clone desse repositório utilizando o comando git clone
ou faça download.
git clone https://github.com/sandro-dev/fastfeet.git
- A partir da raiz do projeto, entre na pasta backend:
cd backend
- Execute o comando
yarn
para instalar as dependências:
yarn
- Execute o comando
cp .env.example .env
e preencha o arquivo.env
comsuas
variáveis de ambiente, para que tudo funcione perfeitamente;
Agora vamos instalar duas imagens de bancos de dados:
- Primeiro vamos instalar o Postgres, para armazenar nossas tabelas. Execute o seguinte comando no terminal:
docker run --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres
- Posteriormente, vamos instalar o Redis, o banco que vai gerenciar o envio de e-mails com filas com alta performance. Execute o comando:
docker run --name redis -p 6379:6379 -d -t redis:alpine
Vamos configurar o banco de dados da aplicação:
-
Crie um novo banco de dados postgres com o nome que colocou em DB_HOST
-
Rode o comando abaixo para executar as migrations, e criar as tabelas no banco de dados;
yarn sequelize db:migrate
Agora, vamos popular a tabela users
com o usuário administrador:
yarn sequelize db:seed:all
Ainda na pasta backend, vamos colocar o servidor para rodar.
yarn dev
Em outro prompt/terminal, execute o seguinte comando e deixe rodando para gerenciar a fila de emails
yarn queue
-
A partir da raiz do projeto, entre na pasta frontend:
cd frontend
-
Execute o comando yarn para instalar todas as dependências;
yarn
- Execute o seguinte comando para executar a aplicação;
yarn start
- Aguarde o browser abrir com o url da aplicação;
Pronto, agora é só explorar o web app ;) Lembrando que o servidor reflete as ações do usuário administrador.
- Dados para login:
- usuario: [email protected], senha: 123456
OBS.: O aplicativo mobile só foi testado para android
- A partir da raiz do projeto, entre na pasta mobile :
cd mobile
- Execute o comando
yarn
para instalar todas as dependências;
yarn
Utilizando um software como o Genymotion
, crie um dispositivo emulador para rodar o aplicativo ou se preferir, conecte um smartphone android em seu computador através do cabo USB, e certifique-se de que está hablitado nas opções de desenvolvedor de seu aparelho a depuração por USB;
- Execute o comando abaixo para instalar o aplicativo em um smartphone ou emulador
react-native run-android
Pronto, agora é só explorar o app ;) Vale salientar que o aplicativo reflete as ações do entregador/deliveryman
- Fata efetuar o login, utilize um ID númerico de um deliveryman cadastrado
mobile
Esse projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Feito com ♥ by Sandro Santos | Me add no LinkedIn