Skip to content

mak1ss/event-scheduler

Repository files navigation

๐ŸŽŸ๏ธ Event Scheduler โ€“ Microservices-Based Learning Project

Event Scheduler is a learning-oriented, microservices-based platform for managing events, tickets, feedback, and promo codes. The system simulates a real-world architecture using modern development practices like DDD, CQRS, gRPC, and service aggregation.

This project was built for educational purposes to explore distributed systems, service communication, and modular design with a focus on real business logic separation.


๐Ÿงฉ Architecture

The project consists of the following microservices:

๐Ÿ—‚๏ธ Events API

  • Core service that manages event data
  • Supports creation, editing, and deletion of events
  • Events can have tags and categories
  • Events have no physical location but can have multiple feedbacks
  • Events can have one or multiple promo codes with limited usage and custom discount percentages
  • Only the event owner can create promo codes
  • Implements DDD (Domain-Driven Design), CQRS, and MediatR
  • Uses Redis for caching event data
  • Uses MSSQL as its database

๐ŸŽซ Tickets API

  • Handles ticket purchases
  • Users can select multiple events and buy access to them in one purchase
  • Applies promo code discounts through gRPC call to Promotions service
  • Stores ticket and purchase data
  • Uses EF Core and MSSQL

๐Ÿ’ฌ Feedbacks API

  • Lets users leave feedback on events
  • Feedback entries can receive likes from other users
  • Uses ADO.NET and MSSQL
  • Lightweight and straightforward, focusing on raw SQL operations

๐Ÿท๏ธ Promotions.gRPC

  • Handles promo code creation and validation
  • Each promo code has a usage limit and discount percentage
  • Works only via gRPC
  • Used during ticket purchase to calculate discount and track code usage
  • Uses EF Core and MSSQL

๐Ÿ”„ Aggregators

These are separate services that combine data from multiple microservices to create a more complete response:

๐Ÿ“ฆ PurchaseAggregator.gRPC

  • Aggregates data from Ticket and Event services
  • Allows creating a purchase that bundles several events
  • Returns event details along with associated purchases

๐Ÿง  EventAggregator

  • Combines event data with user feedbacks
  • Makes it easy to fetch an event along with its feedback in one call

๐ŸŒ API Gateway

  • Uses Ocelot for request routing
  • Central point for accessing all microservices
  • Swagger endpoints for each service are defined for easy testing

๐Ÿ’พ Database

All microservices consistently use Microsoft SQL Server (MSSQL) as their relational database engine. Each service has its own isolated database to ensure data encapsulation and service independence.


๐Ÿงช Technologies & Tools

  • .NET 7
  • Entity Framework Core, ADO.NET
  • MediatR, CQRS, DDD
  • gRPC
  • Redis (Events Service)
  • MSSQL
  • AutoMapper
  • Ocelot Gateway
  • Docker & Docker Compose

This project is an educational sandbox and not intended for production use, but it demonstrates modern architectural practices for microservice ecosystems.

About

๐ŸŽŸ๏ธ Event Scheduler - learning project that simulates a microservices-based event management platform with ticketing, feedback, promo codes, gRPC aggregation, and modern architecture (DDD, CQRS, Redis, MSSQL, Docker).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors