Uma das funcionalidades mais interessantes em um e-commerce é a Omni Channel. Ou seja, não há mais diferenças entre lojas físicas ou na web. O consumidor pode procurar o produto em uma loja física e comprar pela internet ou vice-versa. Basicamente, o cliente Omni Channel é aquele que utiliza de todos os canais simultaneamente, cruzando compras em ambientes físicos e online.
Objetivo do projeto
O objetivo desse projeto é o desenvolvimento de um serviço HTTP resolvendo a funcionalidade de Omni Channel do cliente. Esse serviço fará parte de uma plataforma construída em uma arquitetura baseada em micro-serviços.
índice
- Proposta
- Introdução
- Tecnologias Utilizadas
- Instalação
- Contribuição
- Equipe de Desenvolvimento
- Expressão de gratidão
📝 Proposta
A proposta desse projeto é desenvolver um software para demonstrar os nossos conhecimentos adquiridos durante a aceleração em Node.js
Tecnologias utilizadas
- Node.js
- Sequelize - ORM
- Seeders
- Postgres
- Express
- JsonWebtoken
- Swagger
- Insomnia
- API
- BCrypt
- Yup
- MVC
✅ Requisitos funcionais (obrigatórios)
- Adicionar um produto na lista da compra da cliente;
- Remover um produto da lista da compra da cliente;
- Consultar todos os produtos disponíveis;
- Consultar todas as compras realizadas da cliente.
✅ Requisitos não funcionais
- Logs;
- Tratamento de exceção;
- Autenticação/ Login da API;
- Criação de sessão com token;
- 🚧 Desenvolvimento futuro: Front-end da aplicação.
✅ Regras de Negócio
-
Cada cliente/funcionário poderá ter somente um cadastro, validado por e-mail;
-
É gerado uma sessão via token, com prazo de validade para cada usuário logado no sistema;
-
O acesso é limitado aos funcionários para:
- Cadastro/Atualização/Exclusão de lojas;
- Cadastro/Atualização/Exclusão de produtos;
- Atualização de status do pedido para "RETIRADO";
- Consulta de todos os pedidos dos clientes;
-
O acesso é limitado aos clientes para:
- Cadastro/Atualização de pedido;
- Adicionar/remover produtos de seu carrinho e finalizar a compra;
- Criação/atualização de agendamento do pedido;
- Consulta dos itens e status do pedido;
- Consulta do histórico dos pedidos;
-
O cliente só poderá comprar UM produto de cada tipo;
-
Na inicialização de uma compra, é verificado se o cliente já possui um pedido com status "EM ANDAMENTO";
-
Se o cliente não tiver nenhum pedido é criado automaticamente um novo carrinho com status "EM ANDAMENTO";
-
Para finalizar o pedido, é necessário realizar o agendamento do mesmo;
-
Após realizar o agendamento o status é alterado para "REALIZADO", caracterizando a finalização do pedido e disponibilizando-o para retirada;
-
A finalização do pedido gerará atualização do estoque/ baixa dos itens;
-
Após retirar o pedido em loja, o status do pedido é alterado para "RETIRADO", encerrando asssim toda a cadeia de compras OMNIChannel.
💻 UML
- O modelo e documentação da regra de negócio do sistema foi realizado via diagrama UML (Unified Modeling Language), documentando assim as diversas fases do desenvolvimento de sistemas orientados a objetos e facilitando a compreensão da esquematização do sistema:
💻 Instalação
Essas instruções fornecerão uma cópia do projeto instalado e funcional para fins de desenvolvimento e testes.
1º Passo - Clonar o respositório
Comece clonando esse projeto para sua máquina local.
git clone https://github.com/evelynsantos/omnigirls.git
cd omnigirls
2º Passo - Instalando as dependências
Para instalar as dependências do projeto, digite o seguinte comando no terminal:
npm i
3º Passo - Criando database
Esse projeto foi criado utilizando ORM Sequelize/ Dialeto Postgres, utilizando o ElephantSQL.
Sugerimos que crie uma conexão em
https://customer.elephantsql.com/login
4º Passo - Configurar o ambiente
Para configurar o ambiente é necessário duplicar o arquivo .env.local
e renomea-lo somente para .env
.
Em seguida, altere as informações desse arquivo .env
para as informações correspondentes a conexão do seu banco de dados
5º Passo - Criando as migrations do banco de dados
Para criar as migrations do banco de dados e já ter uma estrutra de relacionamento predefinidos, digite o seguinte comando no terminal:
npx sequelize-cli db:migrate
6º Passo - Criando os seeders do banco de dados
Para criar os seeders que é para deixar um padrão de preenchimento das tabelas com informações, digite o seguinte comando:
npx sequelize-cli db:seed:all
7º Passo - Executando a aplicação
Depois de tudo configurado basta digitar o seguinte comando no terminal:
npm run dev
🎬 Execução dos Endpoints
Acesso aos Endpoints via Swagger. O usuário tem acesso aos seguintes endpoints:
- Cadastro
- Produtos
- Lojas
- Carrinho
- Agendamento
Cliente Endpoint.
- AUTENTICAÇÃO
- ADICIONAR PRODUTO
- REMOVER ITEM DO CARRINHO
- CONSULTAR TODOS OS PRODUTOS
- CONSULTAR TODAS AS COMPRAS COM SWAGGER
Crédito dos .gifs a Ana Carvalho! Ficaram bem legais!
Contribuição
- Faça o fork do projeto (https://github.com/evelynsantos/omnigirls.git)
- Crie uma branch para sua modificação (
git checkout -b feature/fooBar
) - Faça o commit (
git commit -am 'Add some fooBar'
) - Push (
git push origin feature/fooBar
) - Crie um novo Pull Request
👨👩👧👦 Equipe de desevolvimento OMNIGirls
👨🏻🏫 Expressão de gratidão (Parcerias/Prof/Escola/Programa/Mentores...)
- Yellow Belt - Regina Giovannini
- Juliani Cavalcante
- Profº Douglas Morais
- Luquinha
- Luiza Helena Trajano
- [Bruce - Gama Academy] - Perfil no linkedin não localizado)
- Leonardo Lima
- Karine Santos
- Stephen Campos
- Élysson Mendes
- Gabriel Otero
- [Turma 3 da 3ª edição do Luiza Code]
- Galera da Gama Academy
- Galera da Luiza Labs
- Galera da Magazine Luiza