Data da Documentação: 23 de junho de 2025
Estado do Projeto:
- Projeto concluído: todas as funcionalidades previstas no escopo do reposítório da Digital College foram implementadas e testadas.
Este documento descreve o backend finalizado, que serve como base para uma aplicação de e-commerce. O projeto utiliza Node.js com o framework Express.js e Sequelize como ORM para interagir com um banco de dados MySQL.
Acesse a documentação interativa e exemplos de uso dos endpoints diretamente no Postman:
https://documenter.getpostman.com/view/45341254/2sB2xCh9ee
Para ver as estatísticas detalhadas de commits, acesse: Contributors Graph
-
Daniely Olivera
- Configuração inicial do projeto e ambiente de desenvolvimento.
- Implementação do banco de dados e modelos Sequelize (
Users
,Categories
,Products
,ProductImages
,ProductOptions
,ProductCategories
). - CRUD de usuários (
POST /v1/user
,GET /v1/user/:id
,PUT /v1/user/:id
,DELETE /v1/user/:id
). - CRUD de categorias (
POST /v1/category
,GET /v1/category/:id
,PUT /v1/category/:id
,DELETE /v1/category/:id
,GET /v1/category/search
).
-
Ademar Lima
- CRUD de Produtos.
-
Anderson Pontes
- Criação do Middleware de Autenticação (
middleware/authMiddleware.js
). - Criação do endpoint de login (
POST /v1/user/token
). - Implementação para gerar o token JWT ao fazer login, incluindo validação do token JWT em rotas protegidas.
- Expiração do token JWT após 1 dia.
- Aplicação da autenticação para rotas
PUT
eDELETE
de Usuários ePOST
,PUT
,DELETE
de Categorias.
- Criação do Middleware de Autenticação (
-
Node.js (versão LTS recomendada)
-
npm (instalado com o Node.js)
-
Servidor MySQL instalado e em execução.
-
Certifique-se de instalar o pacote cors antes de rodar o projeto:
npm install cors
- Clonar o Repositório (se aplicável).
- Instalar Dependências:
npm install
- Configurar Variáveis de Ambiente (
.env
): Crie um arquivo.env
na raiz do projeto com o seguinte conteúdo, ajustando os valores conforme necessário:Certifique-se de que o banco de dados (APP_PORT=3001 DB_HOST=localhost DB_USER=seu_usuario_mysql DB_PASS=sua_senha_mysql DB_NAME=seu_banco_de_dados_do_projeto DB_DIALECT=mysql JWT_SECRET=seu_segredo_super_secreto_aqui JWT_EXPIRES_IN=1d
DB_NAME
) exista no seu MySQL. - Executar Migrações do Banco de Dados:
npx sequelize-cli db:migrate
- Rodar o Projeto (Desenvolvimento):
O servidor será iniciado (padrão na porta definida em
npm run dev
APP_PORT
ou 3001).
project-root/
├── migrations/ # Arquivos de migração do Sequelize
├── seeders/ # (Opcional) Arquivos de seed do Sequelize
├── src/
│ ├── config/ # Configurações (ex: database.js)
│ ├── controllers/ # Lógica de requisição/resposta da API
│ ├── middleware/ # Middlewares customizados
│ ├── models/ # Definições dos modelos Sequelize
│ ├── routes/ # Definições das rotas da API
│ ├── services/ # Lógica de negócio
│ ├── app.js # Configuração principal do Express
│ └── server.js # Ponto de entrada, inicia o servidor HTTP
├── tests/ # Arquivos de teste (Jest)
├── .env # Variáveis de ambiente (NÃO versionar)
├── .gitignore # Arquivos ignorados pelo Git
├── .sequelizerc # Configuração do Sequelize-CLI
└── package.json # Metadados e dependências
O banco de dados foi implementado conforme o escopo do projeto, utilizando Sequelize. As tabelas criadas incluem:
Users
Categories
Products
ProductImages
ProductOptions
ProductCategories
(tabela de junção para o relacionamento N:M entre Produtos e Categorias)
As definições detalhadas das colunas, tipos, restrições (PK, FK, allowNull, unique, defaultValue) e relacionamentos estão nos respectivos arquivos de migração na pasta migrations/
e nos modelos Sequelize.
Para cada tabela do banco de dados, um modelo Sequelize correspondente foi criado e configurado em src/models/
. Estes modelos incluem:
- Definição dos atributos e seus tipos de dados.
- Validações a nível de aplicação para garantir a integridade dos dados.
- Valores padrão para campos específicos.
- Hooks (Gatilhos):
- O modelo
User.js
possui hooksbeforeCreate
ebeforeUpdate
para automaticamente criptografar (hash) a senha do usuário usandobcryptjs
antes de salvar no banco. - O modelo
User.js
também inclui um método de instânciavalidPassword(password)
para facilitar a verificação de senhas durante o login.
- O modelo
- Associações entre modelos:
Product
↔ProductImage
(One-to-Many)Product
↔ProductOption
(One-to-Many)Product
↔Category
(Many-to-Many, através do modeloProductCategory
)
Todos os endpoints previstos no escopo foram implementados e testados, incluindo autenticação, CRUD de usuários, categorias e produtos. Para exemplos detalhados de uso, consulte a documentação interativa do Postman.
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.