Um estudo para o desenvolvimento do backend de e-commerce. ⢠CRUD de usuÔrio e produto;
⢠Login com autorização e autenticação através de JSON Web Token;
⢠Carrinhos de compra por usuÔrio;
⢠Revisão do preço e disponibilidade dos itens ao pagar o carrinho;
⢠Pagamento por cartão de crédito e PIX respectivamente manejados pelos Gateways de Pagamento Stripe e AbacatePay;
⢠Processamento da resposta dos pagamentos por PIX através do BullMQ para controlar os itens reservados e o status do carrinho;
⢠Suporte de testes unitÔrios e integrados utilizando do Node Test Runner;
Passos para utilizar este projeto:
Clone o projeto ou baixe-o;
gh repo clone NicolasChirazawa/e-commerce
Use o arquivo '.env-teste' de referência para criar o seu próprio '.env', e defina as seguintes variÔveis de acordo a descrição.
SERVER_PORT = /* Porta do Express */
POSTGRES_HOST = /* Configuração do host do Postgres */
POSTGRES_PORT = /* Configuração da porta do Postgres */
POSTGRES_DATABASE = /* Configuração da base de dados do Postgres */
POSTGRES_USER = /* Configuração do user do Postgres */
POSTGRES_PASSWORD = /* Configuração da senha do Postgres */
REDIS_HOST = /* Configuração do host do Redis */
REDIS_PORT = /* Configuração da porta do Redis */
JWT_SECRET = /* Segredo do JWT */
STRIPE_SECRET_KEY = /* Chave do gateway de pagamento Stripe */
ABACATE_SECRET_KEY = /* Chave do gateway de pagamento Abacate Pay */⢠Docker (Windows / Linux);
⢠Postgres;
Recomendação: Um editor de código: Visual Studio Code;
docker-compose up
| rotas | descrição |
|---|---|
POST/register |
Registra um usuƔrio. |
POST/login |
Loga no sistema para gerar um JWT. |
GET/users |
Apanha informaƧƵes dos usuƔrios. |
GET/users:/user_id |
Apanha informação do usuÔrio selecionado. |
PUT/users:/user_id |
Atualiza todas as informaƧƵes do usuƔrio selecionado. |
DELETE/users:/user_id |
Deleta um usuĆ”rio especĆfico. |
PATCH/users:/user_id |
Atualiza um ou mais campos de um usuĆ”rio especĆfico. |
| rotas | descrição |
|---|---|
POST/products |
Registra um produto. |
GET/products |
Apanha informaƧƵes dos produtos. |
GET/products:/product_id |
Apanha informação do produto selecionado. |
PUT/products:/product_id |
Atualiza todas as informaƧƵes do produto selecionado. |
DELETE/products:/product_id |
Deleta um produto especĆfico. |
PATCH/products:/product_id |
Atualiza um ou mais campos de um produto especĆfico. |
| rotas | descrição |
|---|---|
GET/shoppingCart |
Apanha os itens de todos os carrinhos de compra. |
GET/shoppingCart/:cart_id |
Apanha os itens de um carrinho de compra especĆfico |
POST/currentCart/:product_id |
Acrescenta um item no carrinho de compras atual. |
GET/currentCart |
Apanha informaƧƵes do carrinho de compra atual do usuƔrio. |
DELETE/currentCart/:product_id |
Deleta um produto do carrinho de compras atual do usuƔrio. |
PATCH/currentCart/:product_id |
Atualiza um atributo especĆfico do carrinho de compras atual do usuĆ”rio. |
POST/updatePrice |
Atualiza o preƧo dos itens do carrinho de compra atual do usuƔrio. |
POST/verifyStorage |
Verifica os itens do carrinho de compra atual. |
| rotas | descrição |
|---|---|
POST/payment |
Gera o código PIX para pagamento de um carrinho de compra. |
- Estruturação do banco de dados;
- CRUD usuƔrios;
- Login de usuƔrios com bcrypt e JWT;
- CRUD de produtos;
- Carrinho de compras por usuƔrio;
- Testes unitƔrios;
- Testes integrados;
- Verificação de produtos no estoque ao pagar;
- Verificação da precificação dos produtos no carrinho de compras;
- Implementação do Gateway de pagamento Stripe;
- Implementação do Gateway de pagamento AbacatePay;
- Implementação do BullMQ para o processamento do PIX;
- Criação do Docker;
- Criação do Swagger para documentação da API;
