Backend para o funcionamento do site do Ecommerce FullStack, usando rotas HTTP e as entidades relacionadas as regras de negócio da aplicação, com rotas autorizadas através de JWT e utilizando banco de dados Cache Redis para um desempenho melhor.
Instruções para configurar o projeto localmente.
⚠ A versão do Node.js que o projeto foi feito foi na versão v20.15.1, versões anteriores/posteriores podem não ser compatíveis com o projeto, caso tenha o NVM instalado, instale a versão correspondente com os comandos:
# installs nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
# download and install Node.js (you may need to restart the terminal)
nvm install 20.15.1
# verifies the right Node.js version is in the environment
node -v # should print `v20.15.1`
# verifies the right npm version is in the environment
npm -v
- Baixe o aplicativo dektop do Postman.
- Baixe o arquivo JSON das Requisições
- Em seguida, no canto superior esquerdo no aplicativo do Postman, clique no botão "Import":
- Selecione o arquivo JSON baixado no link do JSON acima e importe o arquivo.
- Baixe o arquivo JSON das Requisições
- Clone o repositório:
git clone https://github.com/gustavo-martins-pereira/E-commerce_FullStack-Backend.git
- Navegue até o diretório do projeto:
cd nome-do-repositorio
- Instale as dependências:
npm install
- Configure o arquivo de ambiente
.env
conforme o seu banco PostgreSQL.
Até o momento o banco usado no projeto é um banco de dados local
Passos para a configuração inicial do banco
1. Caso esteja usando o psql, para criar o banco de dados digite o comando:
CREATE DATABASE ecommerce;
⚠ Lembre-se que o nome do banco será usado para configurar a conexão com o banco de dados no arquivo .env
- Para executar as migrations e seeds do projeto, em um terminal na raiz do projeto, digite o comando:
npm run setup-db
⚠ Existe a possibilidade de erro de dado duplicado quando o comando de seed estiver sendo executado, essa é uma ação NORMAL do banco de dados para evitar inconsistências na DB, caso aconteça, tente executar o comando
npm run seed
até que todas as seeds sejam executadas com sucesso
- Em seguida, execute o projeto com:
npm run start
Todas as rotas são protegidas por JWT (exceto a de registro, login e refreshToken e outras rotas estratégicas), então antes de executar qualquer requisição, crie um novo usuário na rota de registro, e faça o login na rota de login para obter o Access Token. O Access Token tem um prazo de validade de apenas 1 minuto, e para obter um novo token de acesso, basta executar a rota de refreshToken.
A duração é pequena para impedir danos relativos ao vazamento do token de acesso as rotas, para mais informações, acesse o conceito de Access token e Refresh token
Lembrando que dependendo do tipo de usuário que você criar, as rotas podem ter acesso restrito, permitindo que somente usuário com certos tipos de role possam acessar aquele recurso.
/src
├── /config
├── /controllers
│ ├── entityController.js
├── /db
│ ├── /config
│ ├── /migrations
│ ├── /models
│ ├── /seeders
│ └── package.json
├── /middlewares
├── /redis
│ ├── /services
│ ├── redisClient.js
├── /repositories
│ ├── entityRepository.js
├── /routes
│ ├── /validators
│ └── routes.js
├── /services
│ ├── /entity
├── /utils
│ ├── /errors
│ └── encryption.js
└── server.js
.env
.env.example
.gitignore
.sequelizerc
LICENSE
package-lock.json
package.json
readme.md