EventFlow is a platform that combines event management and real-time notifications using a microservices architecture. The project consists of two main loosely coupled services that communicate using an event-driven approach.
- Event-Driven Architecture: Asynchronous inter-service communication via the Redis Pub/Sub model.
- Role-Based Access Control (RBAC): Manages user access based on permission levels (e.g., Admin, Event Creator).
- Real-Time Email Notifications: Users receive instant email notifications when events they're subscribed to are updated.
- Multi-Database System: Each service uses a database suited for its specific purpose (MongoDB and MySQL).
- Monorepo Structure: All services and shared components are managed in a single repository, which enhances code consistency.
- Docker Support: The entire project environment can be easily set up and run using Docker.
The project has a monorepo structure containing all services and shared packages.
services/: Contains the main services of the application.packages/shared/: Houses common modules (e.g., error handling, rate limiting, roles) shared by multiple services, preventing code duplication.
The project's dependencies can be easily set up using Docker.
-
Clone the repository:
git clone https://github.com/cemlytic/eventflow-microservices.git cd eventflow-microservices -
Configure the
.envfiles. Add the necessary environment variables. -
Start the Docker environment
docker compose up -d
-
Start the services
npm install npm run dev