Projeto de TCC - Backend para sistema de e-commerce com retaguarda para gerenciar pedidos.
- 🎯 Sobre o Projeto
- 🏗️ Arquitetura do Sistema
- 🚀 Como Executar
- 📚 Documentação da API
- 🗂️ Estrutura de Pastas
- 🔧 Tecnologias Utilizadas
- 📊 Engenharia de Requisitos Funcionais
- 📈 Histórico de Commits
- 📌 Boas Práticas
- 🤝 Contribuição
- 🎯 Diferencial do Projeto
- 👨💻 Autor
Este é um sistema de vitrine digital desenvolvido como projeto de TCC, focado em pequenas lojas que desejam ingressar no mercado digital. O sistema oferece uma API robusta para criar sites de demonstração de produtos onde clientes podem visualizar catálogos e solicitar pedidos. A retaguarda permite gestão simples de produtos, estoque e personalização básica do site, com um gerenciador de pedidos estilo Kanban para controle eficiente das vendas.
- Pequenas lojas que querem presença digital
- Empreendedores iniciando no e-commerce
- Negócios locais buscando expandir vendas
- Lojistas que preferem gestão simples e direta
- 🛍️ Vitrine Digital - Site de demonstração de produtos para clientes
- 📋 Gerenciador Kanban - Sistema de pedidos estilo Kanban para controle de vendas
- ⚙️ Retaguarda Simples - Painel administrativo intuitivo para pequenas lojas
- 💳 Configuração de Pagamentos - Definição de métodos e condições (sem integração)
- 📦 Gestão de Estoque - Controle simples de produtos e movimentações
- 🏢 Personalização Básica - Configurações da empresa e customização do site
O projeto segue uma arquitetura modular bem estruturada:
┌────────────────────────────────────────────────────────────┐
│ PRESENTATION LAYER │
├────────────────────────────────────────────────────────────┤
│ Routes (Public/Private) │ Controllers │ Middlewares │
├────────────────────────────────────────────────────────────┤
│ BUSINESS LAYER │
├────────────────────────────────────────────────────────────┤
│ Services │ DTOs │ Utils │ Validation (Joi) │
├────────────────────────────────────────────────────────────┤
│ DATA LAYER │
├────────────────────────────────────────────────────────────┤
│ Entities (Mongoose) │ Database Connection │
└────────────────────────────────────────────────────────────┘
- Request → Routes → Controllers
- Controllers → Services (lógica de negócio)
- Services → Dtos → Entities (persistência)
- Response ← Controllers ← Services
- Node.js 16.0.0 ou superior
- MongoDB local ou MongoDB Atlas
- Git para clonar o repositório
# 1. Clonar o repositório
git clone https://github.com/Vicks2thori/Oblivion-Ecommerce-API
cd Oblivion-Ecommerce-API
# 2. Instalar dependências
npm install
# 3. Configurar variáveis de ambiente
cp .env.example .env
# Editar .env com suas configurações
# 4. Executar o projeto
npm run dev # Desenvolvimento
npm start # ProduçãoCrie um arquivo .env na raiz do projeto:
# Banco de Dados
MONGODB_URI=mongodb+srv://usuario:senha@cluster.mongodb.net/database
# Servidor
PORT=3000
NODE_ENV=development
# Segurança
JWT_SECRET=sua_chave_secreta_muito_segura
JWT_EXPIRES_IN=7d
# Email (opcional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=seu_email@gmail.com
SMTP_PASS=sua_senha_app- 🌐 Público:
http://localhost:3000/api/public - 🔒 Privado:
http://localhost:3000/api/private - 📖 Swagger:
http://localhost:3000/api-docs
A documentação interativa da API está disponível através do Swagger, permitindo:
- Visualizar todos os endpoints
- Testar requisições diretamente
- Ver schemas de dados
- Entender parâmetros e respostas
src/
├── 📁 config/
│ └── swagger.js # Configuração do Swagger
│
├── 📁 model/
│ └── database.js # Conexão com MongoDB
│
├── 📁 modules/ # Módulos da aplicação
│ ├── 📁 order/ # Gestão de pedidos
│ ├── 📁 category/ # Categorias de produtos
│ ├── 📁 product/ # Produtos
│ ├── 📁 payment/ # Métodos de pagamento
│ ├── 📁 payment_condition/ # Condições de pagamento
│ ├── 📁 stock_category/ # Categorias de estoque
│ ├── 📁 stock_movement/ # Movimentações de estoque
│ ├── 📁 enterprise/ # Gestão da empresa
│ ├── 📁 site/ # Configurações de estilo do site
│ └── 📁 user/ # Gestão de usuários (admins/clients)
│
├── 📁 routes/ # Definição de rotas
│ ├── publicRoutes.js # Rotas públicas (clients)
│ ├── privateRoutes.js # Rotas privadas (admins)
│ └── responseHelpers.js # Helpers de resposta
│
└── server.js # Ponto de entrada da aplicação
│ ├── 📁 entity/ # Nome da Entidade
│ │ ├── entityController.js
│ │ ├── entityDto.js
│ │ ├── entityEntity.js
│ │ ├── entityRouter.js
│ │ ├── entityService.js
│ │ └── entityUtils.js # Arquivo esporádico
Para uma melhor análise das entidades recomenda-se seguir esta ordem de inspeção de arquivos:
Entity → DTO → Utils → Service → Controller → Router.
Cada módulo segue uma estrutura consistente:
- Entity: Modelo de dados (Mongoose)
- DTO: Transferência de dados entre camadas (Joi)
- Utils: Funções auxiliares normalmente ligadas a relacionamentos
- Service: Contém a lógica de negócio
- Controller: Recebe requisições e retorna respostas (Express)
- Router: Definição das rotas clients e admins do módulo
- Node.js - Runtime JavaScript
- Express.js - Framework web
- MongoDB - Banco de dados NoSQL
- Mongoose - ODM para MongoDB
- Joi - Validação de dados
- Morgan - Logs de requisições HTTP
- Nodemon - Reinicialização automática em desenvolvimento
- Git - Controle de versão
- npm - Gerenciador de pacotes
- Swagger - Documentação da API
- Catálogo de produtos
- Sistema de categorias
- Site de demonstração
- Aba de pedidos
- Painel administrativo simples
- Gestão de produtos e categorias
- Controle de estoque básico
- Configurações da empresa
- Personalização do site
- Configuração de métodos
- Definição de condições
- Sem integração real (apenas configuração)
- Categorias de estoque
- Movimentações de entrada/saída/definição
- Gerenciador estilo Kanban
- Controle de status de vendas
O projeto segue uma convenção de commits bem definida:
feat: ✨ Nova funcionalidade
fix: 🐛 Correção de bug
docs: 📚 Documentação
style: 🎨 Formatação de código
refactor: ♻️ Refatoração
test: 🧪 Testes
chore: 🔧 Configurações e dependências
Cada situação possui uma branch dedicada:
feat/Entity(module): Definições gerais da estruturafeat/Referecing-Entity&Entity: Relacionamento entre as entidadesfeat/Entity/Function: Novas funcionalidades (Ex:feat/Product/zero-stock-block)
💡 Dica: Branches são mescladas em
mainapós conclusão e mantidas como histórico de evolução.
- Formato:
tipo(escopo): descrição - Exemplos:
feat(productDto): Adicionado min/max requisições no Schemafix(orderUtills): Corrige cálculo de total do pedidodocs(main:README): Atualiza instruções de instalaçãostyle(Category): Implementação Clean Code
main: Código estável e testadofeat/Entity: Novas entidades ou módulosfeat/Entity/Function: Funcionalidades específicasfix/Entity: Correções de bugsdocs/Entity: Documentação específica
- Criar branch temática para a feature
- Desenvolver seguindo padrões estabelecidos
- Testar funcionalidade implementada
- Commit com mensagem clara
- Pull Request para
main - Code Review e aprovação
- Merge e manutenção da branch
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feat/Entity/Function) - Commit suas mudanças (
git commit -m 'feat(escopo): Descrição') - Push para a branch (
git push origin feat/Entity/Function) - Abra um Pull Request
- Siga o padrão de commits estabelecido
- Mantenha a arquitetura modular
- Documente novas funcionalidades
- Simplicidade: Sem complexidade de integrações de pagamento
- Acessibilidade: Ideal para pequenas lojas iniciantes no comércio digital
- Controle: Gestão direta via WhatsApp (mais pessoal)
- Custo: Solução econômica para presença digital
- Flexibilidade: Personalização básica sem complicações
- Cliente visualiza produtos na vitrine
- Interesse em produto específico
- Solicita via plataforma o pedido
- Lojista gerencia pedido no Kanban e acerta com o cliente (via numero disponivel no pedido)
- Acompanhamento do status da venda
Victoria Riso - Desenvolvedora
- 📧 Email: devvicrisosan@gmail.com
- 🔗 LinkedIn: https://www.linkedin.com/in/victoria-riso-santana-441b0a337/
- 🐙 GitHub: https://github.com/Vicks2thori
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.