Skip to content

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).

Notifications You must be signed in to change notification settings

skynetsites/projeto-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Digital Store API - Projeto Backend

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.

📋 Sobre o Projeto

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

🛠️ Tecnologias usadas no Projeto

O projeto foi desenvolvido com um conjunto de tecnologias modernas do JavaScript, garantindo eficiência, segurança e facilidade na manutenção:

Tecnologias Essenciais

  • 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

Comunicação com Banco

  • MySQL2 - Driver MySQL nativo para Node.js com suporte a Promises

Segurança & Autenticação

  • 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

Desenvolvimento & Testes

  • 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

🎯 Requisitos de Avaliação

1. Funcionalidades Essenciais

  • 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

2. Qualidade do Código

  • Código limpo, comentado e bem estruturado
  • Aplicação de boas práticas de desenvolvimento
  • Arquitetura organizada seguindo padrões estabelecidos

3. Banco de Dados

  • Modelagem eficiente e normalizada
  • Implementação adequada de migrations
  • Consultas otimizadas e relacionamentos bem definidos

4. Documentação

  • Documentação completa da API
  • Instruções claras de configuração
  • Guias de uso e exemplos práticos

🔥 Principais Funcionalidades

Gestão de Usuários

  • 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

Gerenciamento de Produtos

  • 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

Sistema de Categorias

  • Organização hierárquica de produtos
  • Operações completas de gerenciamento
  • Associações dinâmicas com produtos

Recursos Avançados

  • Arquitetura em camadas (Controllers, Services, Models)
  • Filtros de busca por nome, preço, categoria
  • Servidor Express otimizado para alta performance
  • Testes automatizados abrangentes

🌐 Endpoints da API

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

🚀 Configuração e Execução

Pré-requisitos

  • Node.js (versão 16 ou superior)
  • MySQL instalado e configurado
  • Git para clonagem do repositório

Instalação

# 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

Comandos Disponíveis

# 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 watch

📁 Arquitetura do Projeto

project-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)

🚀 Diagrama do banco de dados (SQL)

O diagrama relacional representando a estrutura e os relacionamentos do banco de dados.

Descrição da Imagem

🤝 Contribuição

Para contribuir com o projeto:

  1. Faça um fork do repositório
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -m 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📄 Licença

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.


👨‍💻 Autor

Desenvolvido por: Isaias Oliveira
Curso: Desenvolvedor Web Full Stack
Créditos: Projeto Geração Tech – Instituto Euvaldo Lodi (IEL)

About

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).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published