Skip to content

A microservice-based event management app using ASP.NET Core, React.

License

Notifications You must be signed in to change notification settings

quangtran666/EventBookingService

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EventBooking: A Microservices-based Event Management System

Introduction

⭐ This is a project demonstrating microservices-based event management system. The backend is built with .NET Core, applying Domain-Driven Design (DDD), Vertical Slice Architecture, and Clean Architecture principles. The frontend is developed using React with a focus on modern web technologies and best practices.

The Goals of the Project

  • Building a cloud-native application with .NET Core
  • Docker and Docker Compose for containerization
  • Using Vertical Slice Architecture and Clean Architecture for organizing the codebase
  • Using Domain-Driven Design to design the domain model
  • Implementing the CQRS pattern with MediatR (including Pipelines for validation and logging)
  • Using RabbitMQ on top MassTransit for messaging
  • Identity and Access Management with Keycloak
  • Secure inter-service communication using gRPC with Keycloak
  • API Gateway using YARP
  • Using Marten with PostgreSQL as a document DB
  • Implementing Entity Framework and Dapper for separate read and write models
  • Redis for Caching (Output, Response, and Distributed Caching)
  • Using Minimal API with Carter
  • Input validation using FluentValidation
  • Payments integration with Stripe
  • Notifications using SignalR and Background Service.

Frontend Stack

  • Frontend built using React and TypeScript
  • Applying Vertical Slice Architecture on the frontend as well
  • State management and server-state synchronization with React Query
  • Styling with Tailwind CSS and Shadcn
  • OIDC Client with PKCE flow for secure authentication
  • Payment processing with Stripe.js
  • Real-time notifications with SignalR.js

Domain Business & Bounded Contexts - Services Boundaries

  • Basket: Manages user shopping cart information.
  • Booking: Handles user order information and processing.
  • Discount: Provides discount information for events and applies discounts to orders.
  • Event: Stores and manages event information, including creator, venue, start time, maximum attendees, etc.
  • Notification: Sends notifications to users using a background service..
  • Payment: Processes one-time payments using Stripe.
  • Storage: Manages static files such as images and videos.

Project References

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

A microservice-based event management app using ASP.NET Core, React.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published