# sugamsingh02/event-management-system architecture

> Architecture diagram of the GitHub repository sugamsingh02/event-management-system, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sugamsingh02/event-management-system
- Repository: https://github.com/sugamsingh02/event-management-system

## Overview

This is a Spring-based event management API for attendees, organizers, and administrators. The main attendee workflow is to discover events, register for an approved event, then obtain and manage a ticket. Organizers create and maintain events; administrators review pending events and manage users and registrations. Services enforce domain rules and coordinate JPA repositories, while JWT authentication protects requests. The tree and sampled code support the event, registration, ticket, profile, authentication, and notification branches; unsampled controllers and services are represented only at their enclosing source paths.

Main entry points: [`src/main/java/com/eventmanagment/service/RegistrationService.java`](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/RegistrationService.java) (Registration service), [`src/main/java/com/eventmanagment/service/EventService.java`](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/EventService.java) (Event service), [`src/main/java/com/eventmanagment/repository`](https://github.com/sugamsingh02/event-management-system/tree/main/src/main/java/com/eventmanagment/repository) (JPA database), [`src/main/java/com/eventmanagment/service/TicketService.java`](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/TicketService.java) (Ticket service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Identity and access"]
  node_auth_controller["Authentication API"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_jwt_service["JWT service<br/>[JwtService.java]"]
  node_security["JWT request security"]
end

subgraph group_events["Event lifecycle"]
  node_event_api["Event API"]
  node_event_admin_api["Event review API"]
  node_event_service["Event service<br/>[EventService.java]"]
  node_event_repo["Event repository"]
end

subgraph group_attendance["Registration and tickets"]
  node_registration_api["Registration API"]
  node_registration_service["Registration service"]
  node_registration_repo["Registration repository"]
  node_ticket_api["Ticket API"]
  node_ticket_service["Ticket service<br/>[TicketService.java]"]
  node_ticket_repo["Ticket repository"]
end

subgraph group_operations["Accounts and notifications"]
  node_user_api["User profile API"]
  node_admin_api["Administration API"]
  node_user_service["User service<br/>[UserService.java]"]
  node_user_repo["User repository"]
  node_notification_api["Notifications API"]
  node_notification_service["Notification service"]
  node_notification_repo["Notification repository"]
end

node_user(("API caller"))
node_domain_data["Domain entities"]
node_database[("JPA database")]

node_user -->|"authenticates"| node_auth_controller
node_auth_controller -->|"delegates"| node_auth_service
node_auth_service -->|"checks and saves"| node_user_repo
node_auth_service -->|"issues token"| node_jwt_service
node_user -->|"sends token"| node_security
node_security -->|"validates token"| node_jwt_service
node_user -->|"browses and manages"| node_event_api
node_event_api -->|"delegates"| node_event_service
node_event_service -->|"queries and persists"| node_event_repo
node_user -->|"reviews events"| node_event_admin_api
node_event_admin_api -->|"delegates"| node_event_service
node_user -->|"registers"| node_registration_api
node_registration_api -->|"delegates"| node_registration_service
node_registration_service -->|"checks event"| node_event_repo
node_registration_service -->|"checks attendee"| node_user_repo
node_registration_service -->|"saves and queries"| node_registration_repo
node_user -->|"manages tickets"| node_ticket_api
node_ticket_api -->|"delegates"| node_ticket_service
node_ticket_service -->|"loads registration"| node_registration_repo
node_ticket_service -->|"checks and persists"| node_ticket_repo
node_user -->|"manages profile"| node_user_api
node_user_api -->|"delegates"| node_user_service
node_user_service -->|"reads and updates"| node_user_repo
node_user -->|"administers system"| node_admin_api
node_admin_api -->|"delegates user tasks"| node_user_service
node_user -->|"views notifications"| node_notification_api
node_notification_api -->|"delegates"| node_notification_service
node_notification_service -->|"reads and persists"| node_notification_repo
node_event_service -->|"notifies organizer"| node_notification_service
node_event_repo -->|"persists events"| node_database
node_registration_repo -->|"persists registrations"| node_database
node_ticket_repo -->|"persists tickets"| node_database
node_user_repo -->|"persists users"| node_database
node_notification_repo -->|"persists notifications"| node_database
node_event_service -->|"uses event model"| node_domain_data
node_registration_service -->|"uses registration model"| node_domain_data
node_ticket_service -->|"uses ticket model"| node_domain_data
node_user_service -->|"uses user model"| node_domain_data

click node_auth_controller "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/AuthController.java"
click node_auth_service "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/AuthService.java"
click node_jwt_service "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/security/JwtService.java"
click node_security "https://github.com/sugamsingh02/event-management-system/tree/main/src/main/java/com/eventmanagment/security"
click node_event_api "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/EventController.java"
click node_event_admin_api "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/AdminEventController.java"
click node_event_service "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/EventService.java"
click node_event_repo "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/EventRepository.java"
click node_registration_api "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/RegistrationController.java"
click node_registration_service "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/RegistrationService.java"
click node_registration_repo "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/RegistrationRepository.java"
click node_ticket_api "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/TicketController.java"
click node_ticket_service "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/TicketService.java"
click node_ticket_repo "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/TicketRepository.java"
click node_user_api "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/UserController.java"
click node_admin_api "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/AdminController.java"
click node_user_service "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/UserService.java"
click node_user_repo "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/UserRepository.java"
click node_notification_api "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/NotificationController.java"
click node_notification_service "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/NotificationService.java"
click node_notification_repo "https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/NotificationRepository.java"
click node_domain_data "https://github.com/sugamsingh02/event-management-system/tree/main/src/main/java/com/eventmanagment/entity"
click node_database "https://github.com/sugamsingh02/event-management-system/tree/main/src/main/java/com/eventmanagment/repository"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_auth_controller,node_auth_service,node_jwt_service,node_security toneBlue
class node_event_api,node_event_admin_api,node_event_service,node_event_repo,node_database toneAmber
class node_registration_api,node_registration_service,node_registration_repo,node_ticket_api,node_ticket_service,node_ticket_repo,node_user toneMint
class node_user_api,node_admin_api,node_user_service,node_user_repo,node_notification_api,node_notification_service,node_notification_repo toneRose
class node_domain_data toneTeal
```

## Components

### Identity and access

- [Authentication API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/AuthController.java): `src/main/java/com/eventmanagment/controller/AuthController.java`
- [Authentication service](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/AuthService.java): `src/main/java/com/eventmanagment/service/AuthService.java`
- [JWT service](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/security/JwtService.java): `src/main/java/com/eventmanagment/security/JwtService.java`
- [JWT request security](https://github.com/sugamsingh02/event-management-system/tree/main/src/main/java/com/eventmanagment/security): `src/main/java/com/eventmanagment/security`

### Event lifecycle

- [Event API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/EventController.java): `src/main/java/com/eventmanagment/controller/EventController.java`
- [Event review API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/AdminEventController.java): `src/main/java/com/eventmanagment/controller/AdminEventController.java`
- [Event service](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/EventService.java): `src/main/java/com/eventmanagment/service/EventService.java`
- [Event repository](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/EventRepository.java): `src/main/java/com/eventmanagment/repository/EventRepository.java`

### Registration and tickets

- [Registration API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/RegistrationController.java): `src/main/java/com/eventmanagment/controller/RegistrationController.java`
- [Registration service](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/RegistrationService.java): `src/main/java/com/eventmanagment/service/RegistrationService.java`
- [Registration repository](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/RegistrationRepository.java): `src/main/java/com/eventmanagment/repository/RegistrationRepository.java`
- [Ticket API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/TicketController.java): `src/main/java/com/eventmanagment/controller/TicketController.java`
- [Ticket service](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/TicketService.java): `src/main/java/com/eventmanagment/service/TicketService.java`
- [Ticket repository](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/TicketRepository.java): `src/main/java/com/eventmanagment/repository/TicketRepository.java`

### Accounts and notifications

- [User profile API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/UserController.java): `src/main/java/com/eventmanagment/controller/UserController.java`
- [Administration API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/AdminController.java): `src/main/java/com/eventmanagment/controller/AdminController.java`
- [User service](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/UserService.java): `src/main/java/com/eventmanagment/service/UserService.java`
- [User repository](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/UserRepository.java): `src/main/java/com/eventmanagment/repository/UserRepository.java`
- [Notifications API](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/controller/NotificationController.java): `src/main/java/com/eventmanagment/controller/NotificationController.java`
- [Notification service](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/service/NotificationService.java): `src/main/java/com/eventmanagment/service/NotificationService.java`
- [Notification repository](https://github.com/sugamsingh02/event-management-system/blob/main/src/main/java/com/eventmanagment/repository/NotificationRepository.java): `src/main/java/com/eventmanagment/repository/NotificationRepository.java`

### Other components

- **API caller**
- [Domain entities](https://github.com/sugamsingh02/event-management-system/tree/main/src/main/java/com/eventmanagment/entity): `src/main/java/com/eventmanagment/entity`
- [JPA database](https://github.com/sugamsingh02/event-management-system/tree/main/src/main/java/com/eventmanagment/repository): `src/main/java/com/eventmanagment/repository`

## Connections

- API caller → Authentication API: authenticates
- Authentication API → Authentication service: delegates
- Authentication service → User repository: checks and saves
- Authentication service → JWT service: issues token
- API caller → JWT request security: sends token
- JWT request security → JWT service: validates token
- API caller → Event API: browses and manages
- Event API → Event service: delegates
- Event service → Event repository: queries and persists
- API caller → Event review API: reviews events
- Event review API → Event service: delegates
- API caller → Registration API: registers
- Registration API → Registration service: delegates
- Registration service → Event repository: checks event
- Registration service → User repository: checks attendee
- Registration service → Registration repository: saves and queries
- API caller → Ticket API: manages tickets
- Ticket API → Ticket service: delegates
- Ticket service → Registration repository: loads registration
- Ticket service → Ticket repository: checks and persists
- API caller → User profile API: manages profile
- User profile API → User service: delegates
- User service → User repository: reads and updates
- API caller → Administration API: administers system
- Administration API → User service: delegates user tasks
- API caller → Notifications API: views notifications
- Notifications API → Notification service: delegates
- Notification service → Notification repository: reads and persists
- Event service → Notification service: notifies organizer
- Event repository → JPA database: persists events
- Registration repository → JPA database: persists registrations
- Ticket repository → JPA database: persists tickets
- User repository → JPA database: persists users
- Notification repository → JPA database: persists notifications
- Event service → Domain entities: uses event model
- Registration service → Domain entities: uses registration model
- Ticket service → Domain entities: uses ticket model
- User service → Domain entities: uses user model
