Back to projects

Ing-web-pro Event Platform

University event platform with an Angular role-based UI, Spring Boot microservices, Eureka discovery, gateway JWT protection, per-service PostgreSQL databases, Redis, media uploads, and notifications.

PrototypeAcademic microservices platform / 2025

Problem

An event platform needs separately managed auth, event publishing, registrations, participant flows, notifications, media, and statistics.

Solution

Split the system into an Angular app plus Eureka, Spring Cloud Gateway, user/registration, event, and notification services, all wired with Docker Compose.

Key Features

Role-based Angular routes for organizers and participants with auth and role guards
JWT registration/login flow with gateway validation and downstream user headers
Spring Cloud Gateway routes for auth, events, registrations, users, and notifications
User service for authentication, participant registrations, confirmation/rejection, and cancellation workflows
Event service for event CRUD, search, publishing, cancellation, statistics, view counts, and optional Cloudinary image/video uploads
Notification service for email-backed notifications, unread counts, mark-as-read, event lookup, and deletion
OpenFeign event lookup from the user service plus notification client fallbacks through service, local, and gateway URLs
Docker Compose setup for service discovery, gateway, three Spring Boot services, three PostgreSQL databases, Redis, health checks, and shared network

Architecture Map

Mermaid
flowchart TB
  Actor["Organizer or participant"] --> Angular["Angular event-management-ui"]
  Angular --> Gateway["Spring Cloud Gateway"]
  Gateway --> Auth["Public auth routes"]
  Gateway --> Jwt["Protected API routes with JWT filter"]
  Jwt --> UserSvc["User service"]
  Jwt --> EventSvc["Event service"]
  Jwt --> NotificationSvc["Notification service"]
  Gateway --> Eureka["Eureka service discovery"]
  UserSvc --> Eureka
  EventSvc --> Eureka
  NotificationSvc --> Eureka
  UserSvc --> UserDb[("PostgreSQL user_db")]
  UserSvc --> Feign["OpenFeign event lookup"]
  Feign --> EventSvc
  UserSvc --> NotifyClient["Notification client fallback targets"]
  NotifyClient --> NotificationSvc
  EventSvc --> EventDb[("PostgreSQL event_db")]
  EventSvc --> Redis[("Redis cache")]
  EventSvc --> Cloudinary["Cloudinary media uploads"]
  NotificationSvc --> NotificationDb[("PostgreSQL notification_db")]
  NotificationSvc --> Mail["SMTP email delivery"]
  Docker["Docker Compose network and health checks"] --> Gateway
  Docker --> UserSvc
  Docker --> EventSvc
  Docker --> NotificationSvc