Uma API RESTful completa para e-commerce desenvolvida como projeto final do Projeto Backend do curso Desenvolvedor Web Full Stack da Geração Tech do Instituto Euvaldo Lodi (IEL). A aplicação oferece uma solução robusta para gerenciamento de produtos, usuários, categorias e sistema de autenticação para lojas virtuais.
Este projeto implementa uma API completa para e-commerce que demonstra domínio em desenvolvimento backend moderno, incluindo operações CRUD, autenticação segura, modelagem de dados e arquitetura escalável. A Digital Store API serve como base para qualquer aplicação de comércio eletrônico, fornecendo todos os recursos essenciais para gestão de produtos e usuários.
Repositório de referência: https://github.com/digitalcollegebr/projeto-backend
O projeto foi desenvolvido com um conjunto de tecnologias modernas do JavaScript, garantindo eficiência, segurança e facilidade na manutenção:
- Node.js - Runtime JavaScript para desenvolvimento server-side
- Express.js - Framework web minimalista e flexível para Node.js
- Sequelize - ORM avançado para Node.js com excelente integração ao MySQL
- MySQL - Sistema de gerenciamento de banco de dados relacional robusto e amplamente utilizado
- MySQL2 - Driver MySQL nativo para Node.js com suporte a Promises
- JSON Web Tokens (JWT) - Sistema de autenticação baseado em tokens
- Bcrypt.js - Biblioteca para criptografia segura de senhas
- CORS - Configuração para requisições cross-origin
- Nodemon - Ferramenta para reinicialização automática durante desenvolvimento
- Jest - Framework de testes JavaScript
- C8 - Framework de testes de saída e cobertura de código
- Supertest - Biblioteca para testes de APIs HTTP
- Implementação completa dos endpoints especificados
- Operações CRUD para todas as entidades principais
- Sistema de autenticação e autorização robusto
- Tratamento adequado de erros e validações
- Código limpo, comentado e bem estruturado
- Aplicação de boas práticas de desenvolvimento
- Arquitetura organizada seguindo padrões estabelecidos
- Modelagem eficiente e normalizada
- Implementação adequada de migrations
- Consultas otimizadas e relacionamentos bem definidos
- Documentação completa da API
- Instruções claras de configuração
- Guias de uso e exemplos práticos
- Cadastro completo de usuários com validações
- Armazenamento seguro de credenciais com hash
- Sistema de autenticação via JWT
- Middleware de proteção para rotas privadas
- CRUD completo para produtos e suas variações
- Sistema de categorização flexível
- Gerenciamento de imagens e opções de produtos
- Busca avançada com múltiplos filtros
- Organização hierárquica de produtos
- Operações completas de gerenciamento
- Associações dinâmicas com produtos
- Arquitetura em camadas (Controllers, Services, Models)
- Filtros de busca por nome, preço, categoria
- Servidor Express otimizado para alta performance
- Testes automatizados abrangentes
A API utiliza o prefixo /v1 para versionamento das rotas.
| Método | Endpoint | Descrição | 🔒 Autenticação |
|---|---|---|---|
POST |
/user/token |
Autenticação e geração de token JWT | ❌ Não |
GET |
/user/:id |
Consultar usuário por ID | ❌ Não |
POST |
/user |
Cadastar usuário | ❌ Não |
PUT |
/user/:id |
Atualizar usuário | ✔️ Sim |
DELETE |
/user/:id |
Deletar usuário | ✔️ Sim |
GET |
/category/search |
Listar categoria com filtros | ❌ Não |
GET |
/category/slug/:slug |
Consultar categoria por slug | ❌ Não |
GET |
/category/:id |
Consultar categoria por ID | ❌ Não |
POST |
/category |
Cadastrar categoria | ✔️ Sim |
PUT |
/category/:id |
Atualizar categoria | ✔️ Sim |
DELETE |
/category/:id |
Deletar categoria | ✔️ Sim |
GET |
/product/search |
Busca avançada de produtos | ❌ Não |
GET |
/product/slug/:slug |
Consultar produto por slug | ❌ Não |
GET |
/product/:id |
Consultar produto por ID | ❌ Não |
POST |
/product |
Cadastrar produto | ✔️ Sim |
PUT |
/product/:id |
Atualizar produto | ✔️ Sim |
DELETE |
/product/:id |
Deletar produto | ✔️ Sim |
- Node.js (versão 16 ou superior)
- MySQL instalado e configurado
- Git para clonagem do repositório
# Clone o repositório
git clone https://github.com/skynetsites/projeto-backend
cd projeto-backend
# Instale as dependências
npm install
# Configure as variáveis de ambiente
cp .env.example .env
# Configure o banco MySQL
# Crie um banco de dados no MySQL
mysql -u root -p
CREATE DATABASE projeto_backend;
# Execute as migrations do banco
npm run migrate
# Inicie o servidor de desenvolvimento
npm run dev# Desenvolvimento
npm run dev # Inicia servidor Express com hot-reload
npm run start # Inicia servidor Express de produção
# Banco de Dados
npm run migrate # Executa migrations
npm run seed # Popula banco com dados iniciais
# Testes
npm run coverage # Relatório de cobertura
npm test # Executa todos os testes
npm run watch # Testes em modo watchproject-root/
├── docs/ # Documentação da API
├── src/ # Diretório principal da API
│ ├── __tests__/ # Testes automatizados
│ ├── assets/images/ # Imagens dos produtos
│ ├── config/ # Configurações do Sequelize e DB
│ ├── controllers/ # Lógica dos endpoints
│ ├── middleware/ # Middlewares (auth, erros)
│ ├── migrations/ # Controle de criação de tabelas
│ ├── models/ # Modelos Sequelize
│ ├── routes/ # Definição das rotas
│ ├── seeders/ # Dados iniciais para o banco
│ ├── services/ # Serviços auxiliares (JWT, Upload)
│ ├── sql/ # Banco de dados MySQL
│ ├── app.js # Instância do Express
│ └── server.js # Inicialização do servidor
├── .env # Variáveis de ambiente
├── .gitignore # Arquivos ignorados no Git
├── .sequelizerc # Configuração do Sequelize CLI
├── package.json # Configuração principal da API
└── README.md # Apresentação do projeto (Markdown)
O diagrama relacional representando a estrutura e os relacionamentos do banco de dados.
Para contribuir com o projeto:
- Faça um fork do repositório
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto é desenvolvido exclusivamente para fins educacionais como parte do curso de formação em Desenvolvedor Web Full Stack da Geração Tech do Instituto Euvaldo Lodi (IEL) e o Governo do Estado do Ceará por meio da Agência de Desenvolvimento do Estado do Ceará (ADECE) para capacitação de jovens na área da tecnologia.
Desenvolvido por: Isaias Oliveira
Curso: Desenvolvedor Web Full Stack
Créditos: Projeto Geração Tech – Instituto Euvaldo Lodi (IEL)
