Prisma Prime Market API é um marketplace backend robusto e escalável desenvolvido como projeto de portfólio, demonstrando implementações de alto nível seguindo as melhores práticas de arquitetura de software, Clean Code e princípios SOLID.
Este projeto é focado exclusivamente no backend, fornecendo uma API RESTful completa para gerenciamento de produtos, usu��rios, pedidos, pagamentos e todo o ecossistema de um marketplace moderno.
- Demonstrar arquitetura em camadas bem definida
- Implementar princípios SOLID e Clean Code
- Aplicar padrões de design (Design Patterns)
- Arquitetura orientada a microservices
- Testes automatizados (unitários, integração e E2E)
- Documentação completa e profissional
- CI/CD com boas práticas DevOps
O projeto segue uma arquitetura em camadas, separando responsabilidades e garantindo manutenibilidade:
PrismaPrimeMarketAPI/
├── src/
│ ├── PrismaPrimeMarket.API/ # Camada de Apresentação (Controllers, Middlewares)
│ ├── PrismaPrimeMarket.Application/ # Camada de Aplicação (Use Cases, DTOs, Interfaces)
│ ├── PrismaPrimeMarket.Domain/ # Camada de Domínio (Entidades, Value Objects, Regras de Negócio)
│ ├── PrismaPrimeMarket.Infrastructure/ # Camada de Infraestrutura (Persistência, External Services)
│ └── PrismaPrimeMarket.CrossCutting/ # Recursos Transversais (IoC, Logging, Security)
├── tests/
│ ├── PrismaPrimeMarket.UnitTests/
│ ├── PrismaPrimeMarket.IntegrationTests/
│ └── PrismaPrimeMarket.E2ETests/
└── docs/
├── ARCHITECTURE.md
├── API.md
└── CONTRIBUTING.md
- API: Endpoints REST, validações de entrada, autenticação/autorização
- Application: Casos de uso, orquestração de domínio, DTOs, mapeamentos
- Domain: Coração da aplicação - entidades, agregados, regras de negócio
- Infrastructure: Implementações de persistência, serviços externos, messaging
- CrossCutting: Injeção de dependência, configurações, aspectos transversais
- .NET 8.0 - Framework principal
- C# 12 - Linguagem de programação
- ASP.NET Core - Web API
- Entity Framework Core - ORM
- PostgreSQL - Banco de dados relacional
- Redis - Cache distribuído
- RabbitMQ / Azure Service Bus - Message Broker
- Azure Functions - Background jobs e tarefas agendadas
- JWT (JSON Web Tokens) - Autenticação stateless
- Identity - Gerenciamento de usuários
- OAuth 2.0 - Autorização de terceiros
- Swagger/OpenAPI - Documentação interativa da API
- xUnit - Framework de testes
- Moq - Mocking para testes
- FluentAssertions - Assertions legíveis
- FluentValidation - Validações fluentes
- AutoMapper - Mapeamento objeto-objeto
- Serilog - Logging estruturado
- Polly - Resilience e fault-handling
- MediatR - CQRS e mediator pattern
- Registro e autenticação de usuários
- Perfis de usuário (Comprador, Vendedor, Admin)
- Gerenciamento de endereços
- Verificação de email/telefone
- CRUD de produtos
- Categorização e tags
- Busca e filtros avançados
- Gestão de estoque
- Imagens e variações de produtos
- Carrinho de compras
- Processamento de pedidos
- Rastreamento de status
- Histórico de pedidos
- Integração com gateways de pagamento
- Múltiplos métodos de pagamento
- Gestão de reembolsos
- Webhooks de confirmação
- Sistema de reviews e ratings
- Comentários e respostas
- Moderação de conteúdo
- Email notifications
- Push notifications
- SMS notifications (opcional)
OU (para desenvolvimento sem Docker):
# Clone o repositório
git clone https://github.com/jorelrx/PrismaPrimeMarketAPI.git
cd PrismaPrimeMarketAPI
# Inicie todos os serviços
docker-compose up -d
# Acesse a API
# API: http://localhost:8080
# Swagger: http://localhost:8080/swagger
# PgAdmin: http://localhost:5050Pronto! A API está rodando com banco de dados PostgreSQL e PgAdmin.
git clone https://github.com/jorelrx/PrismaPrimeMarketAPI.git
cd PrismaPrimeMarketAPI# Instalar dependências Node.js (commitlint, husky)
npm install
# Configurar Git hooks
npm run prepareIsso ativa:
- ✅ Bloqueio de commits fora da convenção (feat, fix, etc.)
- ✅ Bloqueio de push se testes falharem
Com Docker:
docker run -d \
--name prismaprime-postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=PrismaPrimeMarketDB \
-p 5432:5432 \
postgres:16-alpineOu instale PostgreSQL localmente e crie o banco PrismaPrimeMarketDB
Edite src/PrismaPrimeMarket.API/appsettings.Development.json:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=PrismaPrimeMarketDB;Username=postgres;Password=postgres"
}
}
#### 4. Execute migrations e inicie a API
```bash
# Restaurar pacotes .NET
dotnet restore
# Build
dotnet build
# Aplicar migrations
dotnet ef database update --project src/PrismaPrimeMarket.Infrastructure --startup-project src/PrismaPrimeMarket.API
# Rodar testes (garantir que tudo está OK)
dotnet test
# Executar a API
dotnet run --project src/PrismaPrimeMarket.API
# Acesse: http://localhost:5000
# Swagger: http://localhost:5000/swaggerPronto! Agora seus commits e pushes serão validados automaticamente. 🎉
# Testes locais
dotnet test
# Testes com Docker (ambiente isolado)
.\scripts\test-docker.bat # Windows
docker-compose -f docker-compose.test.yml up --build --abort-on-container-exit # Linux/Mac
# Validação completa (restore + build + test + format)
.\scripts\validate.bat # Windows
./scripts/validate.sh # Linux/MacConfigurar hook para rodar testes antes de cada push:
git config core.hooksPath .githooksAgora os testes rodarão automaticamente antes de cada git push e bloquearão o push se falharem! 🛡️
# Desenvolvimento local com live reload
docker-compose up -d
# Rebuild após mudanças
docker-compose up -d --build
# Ver logs
docker-compose logs -f api
# Parar todos os serviços
docker-compose down
# Limpar volumes (reset completo)
docker-compose down -v
# Rodar apenas testes
docker-compose -f docker-compose.test.yml up --build --abort-on-container-exit- Development:
docker-compose.yml- Desenvolvimento local - Test:
docker-compose.test.yml- Testes automatizados
Pipeline completo com GitHub Actions:
- ✅ CI: Testes automatizados em Docker + análise de código
- ✅ CD: Deploy automático em Staging e Production
- ✅ Security: Scan de vulnerabilidades com Trivy
- ✅ Quality: Análise de código e formatação
Ver documentação completa: CI/CD Docker Guide
- Arquitetura do Projeto
- Estrutura do Projeto
- Guia de API
- CQRS Guide
- CI/CD com Docker
- Testes Automatizados
- Referência Rápida dotnet ef database update
### 4. Execute a aplicação
```bash
dotnet run
A API estará disponível em https://localhost:5001 e a documentação Swagger em https://localhost:5001/swagger
dotnet testdotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover# Testes unitários
dotnet test --filter Category=Unit
# Testes de integração
dotnet test --filter Category=Integration
# Testes E2E
dotnet test --filter Category=E2E- Arquitetura Detalhada
- Documentação da API
- Guia de Contribuição
- Integração com IA (PostgreSQL + pgvector)
- Swagger UI (quando a aplicação estiver rodando)
- Implementação CI/CD - Visão geral do pipeline
- Guia de Configuração CI/CD - Setup passo a passo
- Quick Reference - Comandos úteis
- Workflows README - Documentação dos workflows
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Repository Pattern
- Unit of Work
- CQRS (Command Query Responsibility Segregation)
- Mediator Pattern
- Factory Pattern
- Strategy Pattern
- Specification Pattern
- Nomes significativos e descritivos
- Funções pequenas e focadas
- Comentários apenas quando necessário
- Tratamento de erros consistente
- Testes como documentação
- Autenticação baseada em JWT
- Validação de entrada rigorosa
- Proteção contra CORS
- Rate limiting
- Criptografia de dados sensíveis
- Auditoria e logging de ações críticas
- Estruturação do projeto
- Documentação inicial
- Configuração de CI/CD
- Setup de infraestrutura base
- Autenticação e autorização
- CRUD de produtos
- Sistema de pedidos
- Integração de pagamentos
- Sistema de notificações
- Busca avançada com Elasticsearch
- Cache distribuído
- Message queue
- Performance tuning
- Monitoramento e observability
- Escalabilidade horizontal
- Documentação completa
Jorel
- GitHub: @jorelrx
- LinkedIn: Joel Victor
- Email: joelv.9j@gmail.com
Este projeto foi desenvolvido como parte do meu portfólio profissional, demonstrando habilidades em:
- Arquitetura de software
- Desenvolvimento backend com .NET
- Boas práticas de programação
- DevOps e CI/CD
- Documentação técnica
⭐ Se este projeto foi útil para você, considere dar uma estrela no repositório!