Microservicio de gestión de cupones promocionales que permite generar, consultar y validar cupones de descuento para usuarios. Resuelve el problema de negocio de automatizar la distribución y control de promociones, evitando el abuso de descuentos mediante reglas de negocio como límites de tiempo entre solicitudes y fechas de expiración.
- Arquitectura - Flujo de datos, dependencias y modelo de datos
- API - Documentación de endpoints y contratos
- Configuración - Guía detallada de instalación y configuración
- Framework: ASP.NET Core 8.0
- Lenguaje: C# (.NET 8.0)
- Base de Datos: PostgreSQL 15
- ORM: Entity Framework Core 9.0
- Patrón CQRS: MediatR 14.0
- Contenedores: Docker & Docker Compose
- Documentación API: Swagger/OpenAPI
- Arquitectura: Clean Architecture (Domain, Application, Infrastructure, API)
# Levantar servicio con base de datos
docker-compose up
# El servicio estará disponible en:
# - API: http://localhost:7185
# - Swagger UI: http://localhost:7185/swagger# Restaurar dependencias
dotnet restore
# Ejecutar migraciones
dotnet ef database update --project src/promotions_services.infrastructure --startup-project src/promotions_services.api
# Ejecutar el servicio
dotnet run --project src/promotions_services.api
# Ejecutar tests
dotnet test- ✅ Generación automática de cupones con descuentos y montos mínimos aleatorios
- ✅ Validación de límite de 15 días entre solicitudes por usuario
- ✅ Consulta de cupones válidos por usuario
- ✅ Invalidación de cupones una vez utilizados
- ✅ Cupones con fecha de expiración de 1 año
- ✅ CORS configurado para frontend (localhost:3000)
- ✅ Migraciones automáticas en startup
promotions_services/
├── src/
│ ├── promotions_services.api/ # Capa de presentación (Controllers)
│ ├── promotions_services.application/ # Lógica de aplicación (Commands, Queries)
│ ├── promotions_services.domain/ # Entidades y reglas de negocio
│ └── promotions_services.infrastructure/ # Persistencia y servicios externos
├── tests/ # Tests unitarios y de integración
├── docs/ # Documentación del proyecto
└── docker-compose.yml # Orquestación de contenedores
Este proyecto es parte de EventMesh Lab.