A distributed system built to manage events, ticket sales, and interactions between Event Owners and Clients. The system leverages a microservices architecture to ensure scalability and separation of concerns.
The project consists of four main components communicating via REST APIs and gRPC:
IDM Service (Identity Management): Handles user registration, roles, and authentication (JWT). It provides a gRPC server for token validation across other services.
Client Service: Manages detailed client profiles using MongoDB. It filters data based on roles (Private vs. Public views).
Event Service: Manages events, packages, and ticket inventory using a relational database (SQL).
Frontend (React): A unified event platform, based on role-access.
Backend: FastAPI, Uvicorn.
Databases: MongoDB, MySQL, SQLite
Communication:
- REST: Synchronous data exchange between Frontend and Backend
- gRPC: Secure, high-performance authentication checks
Frontend: React.js, Context API, CSS Modules
DevOps: Docker & Docker Compose
- Event Owner: Create/Update events, view ticket sales, access public info of their event attendees.
- Client: Purchase tickets, manage personal profile, view purchase history.