O App delivery é um aplicativo de vendas de produtos para uma distribuidora de bebidas.
O projeto Fullstack JavaScript desenvolvido em grupo. Foi desenvolvido uma API consumindo um banco de dados, utilizando principios SOLID e arquitetura MSC com JavaScript, dockerização(dockerfile, docker-compose). Utilizando modelagem de dados através do Sequelize, onde tem a finalidade de ser consumida por um front-end, que foi desenvolvido utilizando o React, context, HTML, CSS.
-
O aplicativo tem:
- Acesso via login: tanto clientes como pessoas vendedoras, assim como a pessoa que administra o sistema, porém para funções diferentes: (1) A pessoa cliente, que compra da lista de produtos; (2) A pessoa vendedora, que aprova, prepara e entrega; (3) A pessoa administradora, que gerencia quem usa o aplicativo;
- A comunicação entre clientes e pessoas vendedoras: a pessoa cliente faz o pedido via "carrinho de compras" e a pessoa vendedora aprova, prepara e envia esse pedido. Quando o produto é recebido por quem comprou, essa pessoa marca o pedido como "recebido". Ambos possui detalhes sobre seus pedidos;
- Se a pessoa cliente fez o pedido, o mesmo aparece para a pessoa vendedora em seu dash de pedidos após a atualização da página. A pessoa cliente, por sua vez, deve tem as informações sobre seu pedido quando sua página for atualizada, ou seja, tem informações se o pedido está sendo preparado ou se já saiu pra entrega;
-
A API é responsavel por:
-
Criar e manipular dados com MySQL através do Sequelize, armazenando os dados;
-
Autenticação de usuários, vendedores e administrador utilizando o JWT;
- JavaScript;
- Node.js;
- Sequelize;
- Express.js;
- MYSQL;
- Docker;
- ES6;
- JWT;
- axios;
- React;
- HTML;
- CSS;
- Testes: Mocha, Chai, Sinon, Jest e react-testing-library;
git clone [email protected]:LucianooDutra/ProjetoDeliveryApp.git
cd ProjetoDeliveryApp/
npm install
Para rodar a aplicação você vai precisar ter o Docker instalado e usar os seguintes comandos no terminal:
npm start
- Irá abrir a tela do seu navegador com a aplicação rodando.
package.json
principal
-
start
: Limpa as portas3000
e3001
e simula a inicialização no avaliador. Também prepara o campo rodando oSequelize
para restaurar o banco de dados de testes (final-test
) e sobe a aplicação compm2
em modofork
(uma instância para cada aplicação). Nesse modo, as alterações não são assistidas;- uso (na raiz do projeto):
npm start
- uso (na raiz do projeto):
-
stop
: Para e deleta as aplicações rodando nopm2
;- uso (na raiz do projeto):
npm stop
- uso (na raiz do projeto):
-
dev
: Limpa as portas3000
e3001
e sobe a aplicação compm2
em modofork
(uma instância pra cada aplicação). Nesse modo, as atualizações são assistidas (modowatch
);- uso (na raiz do projeto):
npm run dev
- uso (na raiz do projeto):
-
dev:prestart
: A partir da raiz, esse comando faz o processo de instalação de dependências (npm i
) nos dois projetos (./front-end
e./back-end
) e roda oSequelize
no./back-end
(lembrar de configurar o.env
no mesmo);- uso (na raiz do projeto):
npm run dev:prestart
- uso (na raiz do projeto):
-
db:reset
: Roda os scripts doSequelize
restaurando o banco de dados de desenvolvimento (final-dev
). Utilize esse script caso ocorra algum problema no seu banco local;- uso (na raiz do projeto):
npm run db:reset
- uso (na raiz do projeto):
-
db:reset:debug
: Roda os scripts doSequelize
restaurando o banco de dados de desenvolvimento (final-dev
). Utilize esse script caso ocorra algum problema no seu banco local. Esse comando também é capaz de retornar informações detalhadas de erros (quando ocorrerem no processo);- uso (na raiz do projeto):
npm run db:reset:debug
- uso (na raiz do projeto):
-
test <nomes-dos-arquivos>
: Roda todos os testes (ou uma parte deles caso<nomes-dos-arquivos>
seja definido) utilizando o banco de dados de testes (final-test
);- uso (na raiz do projeto):
npm test
,npm test 01login 02register
ou aindanpm run test 01 02
- uso (na raiz do projeto):
-
test:dev <nomes-dos-arquivos>
: Roda todos os testes (ou uma parte deles caso<nomes-dos-arquivos>
seja definido) utilizando o banco de dados de desenvolvimento (final-dev
);- uso (na raiz do projeto):
npm run test:dev
,npm run test:dev 01login 02register
ou aindanpm test:dev 01 02
;
- uso (na raiz do projeto):
-
test:dev:open <nomes-dos-arquivos>
: Roda todos os testes (ou uma parte deles caso<nomes-dos-arquivos>
seja definido) utilizando o banco de dados de desenvolvimento (final-dev
), exemplonpm test:dev:open 01login 02register
ou aindanpm test:dev:open 01 02
. Esse teste deve abrir uma janela mostrando o comportamento das páginas;- uso (na raiz do projeto):
npm run test:dev:open
,npm run test:dev:open 01login 02register
ou aindanpm test:dev:open 01 02
;
- uso (na raiz do projeto):
-
test:dev:report "<nomes-dos-arquivos>"
: Roda todos os testes (ou uma parte deles caso"<nomes-dos-arquivos>"
seja definido) utilizando o banco de dados de desenvolvimento (final-dev
). Esse teste devolve um output em texto com o resultado de todos os testes. Oslogs
são gerados em./__tests__/reports
.- uso (na raiz do projeto):
npm run test:dev:report
,npm run test:dev:report "01login 02register"
ou aindanpm run test:dev:report "01 02"
;
- uso (na raiz do projeto):
-
npm run dev:prestart
(esse comando também restaurará o banco de dados, caso o.env
esteja configurado corretamente).
Observações:
Para realizar as requisições em back-end, você pode usar a extensão Thunder Client do VSCode ou os clientes HTTP Postman ou Insomnia, ou ainda utilizar o próprio frontend pra navegar entre as telas.
Front-End
-
Para rodar o front-end que consome a API desenvolvida basta executar o comando abaixo a partir da raiz do projeto:
cd front-end/ && npm start
-
Para realizar o login na aplicação, com o perfil de administrador e poder adicionar um novo vendedor, terá que acessar com os seguintes dados:
login: [email protected] senha: --adm2@21!!--
-
Para realizar o login na aplicação, com o perfil de vendedor e poder ter acesso a todas as vendas no seu nome, terá que acessar com os seguintes dados:
login: [email protected] senha: fulana@123