Este é um projeto de estudo de uma Plataforma de E-commerce modular, criado para explorar e aplicar os 23 Padrões de Projeto GoF. O projeto simula uma loja online, incluindo funcionalidades de catálogo de produtos, carrinho de compras e sistema de checkout, com um backend em Node.js e um frontend em React.
- Consolidar o conhecimento dos padrões de projeto, aplicando cada um em uma funcionalidade específica.
- Criar uma arquitetura extensível e modular para uma plataforma de e-commerce.
- Implementar conceitos avançados, como caching, autenticação e integração com APIs de pagamento.
- Node.js e Express
- Cors para controle de acesso
- Dotenv para gerenciamento de variáveis de ambiente
- Nodemon para hot reload do backend
- React com Vite
- Hooks para controle de estado e chamadas à API
- CSS Modules ou Styled Components (a adicionar)
- Cache com Singleton para simulação de cache com TTL (opção de uso de MongoDB ou Redis para futuro aprimoramento)
- ESLint para padronização de código (opcional)
- Configuração inicial do projeto (frontend e backend)
- Catálogo de produtos
- Gerenciamento de cache com TTL (Singleton)
- Controle de estoque com notificações (Observer Pattern)
- Estratégias de precificação (Strategy Pattern)
- Carrinho de compras
- Sistema de checkout com integração de pagamentos
- Painel administrativo para gerenciamento de produtos
- Node.js instalado (v18 ou superior)
- npm ou yarn para gerenciamento de pacotes
-
Clone o repositório:
git clone https://github.com/seu-usuario/ecommerce-platform.git cd ecommerce-platform
-
Configuração do Backend:
cd backend npm install
-
Configuração do Frontend:
cd ../frontend npm install
-
Crie um arquivo
.env
na pastabackend
:PORT=5000
-
Inicie o backend:
cd backend npm run dev
-
Inicie o frontend:
cd ../frontend npm run dev
-
Acesse o frontend em http://localhost:5173 e o backend em http://localhost:5000.
ecommerce-platform
├── backend
│ ├── controllers # Controladores para manipulação de dados
│ ├── models # Modelos de dados
│ ├── routes # Rotas da API
│ ├── utils # Padrões de projeto e utilitários
│ ├── app.js # Configuração do app Express
│ └── server.js # Inicialização do servidor
├── frontend
│ ├── src
│ │ ├── components # Componentes React reutilizáveis
│ │ ├── pages # Páginas da aplicação
│ │ ├── hooks # Hooks customizados
│ │ ├── services # Serviços para chamadas à API
│ │ └── App.jsx # Componente principal
│ └── index.html # Arquivo HTML inicial
├── config
│ └── config.js # Arquivo de configurações globais
├── .env # Variáveis de ambiente
├── package.json # Dependências e scripts
└── README.md # Documentação do projeto
- Singleton: Utilizado para gerenciamento de cache com TTL e configurações globais.
- Factory Method: Implementado para criação de diferentes tipos de produtos.
- Observer: Controle de estoque e notificações de baixa quantidade.
- Strategy: Diferentes estratégias de precificação (preço fixo, desconto, promoção).
- Template Method (Planejado): Para diferentes processos de checkout.
- Decorator (Planejado): Para aplicar descontos adicionais em produtos.
-
Singleton - Cache:
const ProductCache = require('./utils/patterns/ProductCache'); ProductCache.setProduct(id, product);
-
Observer - Controle de Estoque:
inventory.addObserver(new LowStockNotifier()); inventory.updateStock(id, quantity);
-
Strategy - Precificação:
const strategy = new DiscountStrategy(10); const finalPrice = strategy.calculate(product.price);
- Carrinho de Compras: Implementação do carrinho usando o padrão Composite para estrutura de itens.
- Checkout: Integrar com APIs de pagamento como Stripe e PayPal.
- Autenticação: Sistema de login e painel administrativo com JWT.
- Sistema de Plugins: Utilizar o padrão Observer para criar plugins customizáveis para a loja.
Contribuições são bem-vindas! Sinta-se à vontade para abrir issues, enviar PRs ou sugerir melhorias.
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature
) - Faça o commit das suas mudanças (
git commit -m 'Adiciona nova feature'
) - Faça o push para a branch (
git push origin feature/nova-feature
) - Abra um Pull Request
Este projeto está sob a licença MIT. Consulte o arquivo LICENSE
para mais detalhes.
- Fernando Moura: LinkedIn
Clone o repositório, configure o ambiente e vamos implementar juntos uma plataforma de e-commerce modular usando todos os padrões de projeto!