# soltani-labs/eventpulse-gateway-security architecture

> Architecture diagram of the GitHub repository soltani-labs/eventpulse-gateway-security, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/soltani-labs/eventpulse-gateway-security
- Repository: https://github.com/soltani-labs/eventpulse-gateway-security

## Overview

EventPulse is a set of services for user authentication, event discovery and booking, with notification handling and gateway security. The principal workflow is a user booking an event: the event API delegates booking logic, which checks event availability, saves the booking, and attempts a notification. Authentication provides signup/login and JWTs; the gateway has JWT-filtering code. The README gives only the project name, and service routing/configuration was not sampled, so cross-service routing links are omitted or marked unverified.

Main entry points: [`event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java`](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java) (Booking workflow), [`auth-service/src/main/java/com/eventpulse/authservice/service/AuthService.java`](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/service/AuthService.java) (Auth workflows), [`event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java`](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java) (Event endpoints), [`auth-service/src/main/java/com/eventpulse/authservice/repository/UserRepository.java`](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/repository/UserRepository.java) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_edge["Gateway security"]
  node_gateway["API gateway"]
  node_jwtutil["JWT utilities<br/>[JwtUtil.java]"]
end

subgraph group_identity["Identity"]
  node_authapi["Auth endpoints"]
  node_authlogic["Auth workflows<br/>[AuthService.java]"]
  node_users["User records<br/>[User.java]"]
  node_userrepo["User repository"]
  node_userdetails["User lookup"]
  node_authjwt["JWT issuance<br/>[JwtService.java]"]
end

subgraph group_events["Events and bookings"]
  node_eventapi["Event endpoints"]
  node_eventlogic["Event management<br/>[EventService.java]"]
  node_bookinglogic["Booking workflow"]
  node_eventsrepo["Event repository"]
  node_bookingrepo["Booking repository"]
  node_eventrecords["Event and booking records<br/>[Event.java]"]
  node_bookingrecords["Booking records<br/>[Booking.java]"]
end

subgraph group_notify["Notifications"]
  node_notifyclient["Notification client"]
  node_notifyapi["Notification endpoints"]
  node_notifylogic["Notification handling"]
  node_notifyrecords["Notification records<br/>[Notification.java]"]
end

node_user(("User"))

node_user -.->|"sends requests"| node_gateway
node_gateway -->|"uses"| node_jwtutil
node_user -->|"authenticates"| node_authapi
node_authapi -->|"delegates to"| node_authlogic
node_authlogic -->|"checks and saves"| node_userrepo
node_authlogic -->|"issues token"| node_authjwt
node_userrepo -->|"persists"| node_users
node_userdetails -->|"looks up user"| node_userrepo
node_user -->|"requests event action"| node_eventapi
node_eventapi -->|"delegates event calls"| node_eventlogic
node_eventapi -->|"delegates booking"| node_bookinglogic
node_eventlogic -->|"reads and saves"| node_eventsrepo
node_bookinglogic -->|"checks and updates"| node_eventsrepo
node_bookinglogic -->|"checks and saves"| node_bookingrepo
node_eventsrepo -->|"persists"| node_eventrecords
node_bookingrepo -->|"persists"| node_bookingrecords
node_bookinglogic -->|"sends notification"| node_notifyclient
node_notifyclient -.->|"submits notification"| node_notifyapi
node_notifyapi -->|"delegates to"| node_notifylogic
node_notifylogic -->|"creates and stores"| node_notifyrecords

click node_gateway "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/api-gateway/src/main/java/com/eventpulse/apigateway/security/JwtAuthenticationFilter.java"
click node_jwtutil "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/api-gateway/src/main/java/com/eventpulse/apigateway/security/JwtUtil.java"
click node_authapi "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/controller/AuthController.java"
click node_authlogic "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/service/AuthService.java"
click node_users "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/entity/User.java"
click node_userrepo "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/repository/UserRepository.java"
click node_userdetails "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/security/CustomUserDetailsService.java"
click node_authjwt "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/security/JwtService.java"
click node_eventapi "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java"
click node_eventlogic "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/service/EventService.java"
click node_bookinglogic "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java"
click node_eventsrepo "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/repository/EventRepository.java"
click node_bookingrepo "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/repository/BookingRepository.java"
click node_eventrecords "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/entity/Event.java"
click node_bookingrecords "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/entity/Booking.java"
click node_notifyclient "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/client/NotificationClient.java"
click node_notifyapi "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/notification-service/src/main/java/com/eventpulse/notificationservice/controller/NotificationController.java"
click node_notifylogic "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/notification-service/src/main/java/com/eventpulse/notificationservice/service/NotificationService.java"
click node_notifyrecords "https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/notification-service/src/main/java/com/eventpulse/notificationservice/entity/Notification.java"

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_gateway,node_jwtutil,node_user toneBlue
class node_authapi,node_authlogic,node_users,node_userrepo,node_userdetails,node_authjwt toneAmber
class node_eventapi,node_eventlogic,node_bookinglogic,node_eventsrepo,node_bookingrepo,node_eventrecords,node_bookingrecords toneMint
class node_notifyclient,node_notifyapi,node_notifylogic,node_notifyrecords toneRose
```

## Components

### Gateway security

- [API gateway](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/api-gateway/src/main/java/com/eventpulse/apigateway/security/JwtAuthenticationFilter.java): `api-gateway/src/main/java/com/eventpulse/apigateway/security/JwtAuthenticationFilter.java`
- [JWT utilities](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/api-gateway/src/main/java/com/eventpulse/apigateway/security/JwtUtil.java): `api-gateway/src/main/java/com/eventpulse/apigateway/security/JwtUtil.java`

### Identity

- [Auth endpoints](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/controller/AuthController.java): `auth-service/src/main/java/com/eventpulse/authservice/controller/AuthController.java`
- [Auth workflows](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/service/AuthService.java): `auth-service/src/main/java/com/eventpulse/authservice/service/AuthService.java`
- [User records](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/entity/User.java): `auth-service/src/main/java/com/eventpulse/authservice/entity/User.java`
- [User repository](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/repository/UserRepository.java): `auth-service/src/main/java/com/eventpulse/authservice/repository/UserRepository.java`
- [User lookup](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/security/CustomUserDetailsService.java): `auth-service/src/main/java/com/eventpulse/authservice/security/CustomUserDetailsService.java`
- [JWT issuance](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/auth-service/src/main/java/com/eventpulse/authservice/security/JwtService.java): `auth-service/src/main/java/com/eventpulse/authservice/security/JwtService.java`

### Events and bookings

- [Event endpoints](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java): `event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java`
- [Event management](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/service/EventService.java): `event-service/src/main/java/com/eventpulse/eventservice/service/EventService.java`
- [Booking workflow](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java): `event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java`
- [Event repository](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/repository/EventRepository.java): `event-service/src/main/java/com/eventpulse/eventservice/repository/EventRepository.java`
- [Booking repository](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/repository/BookingRepository.java): `event-service/src/main/java/com/eventpulse/eventservice/repository/BookingRepository.java`
- [Event and booking records](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/entity/Event.java): `event-service/src/main/java/com/eventpulse/eventservice/entity/Event.java`
- [Booking records](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/entity/Booking.java): `event-service/src/main/java/com/eventpulse/eventservice/entity/Booking.java`

### Notifications

- [Notification client](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/event-service/src/main/java/com/eventpulse/eventservice/client/NotificationClient.java): `event-service/src/main/java/com/eventpulse/eventservice/client/NotificationClient.java`
- [Notification endpoints](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/notification-service/src/main/java/com/eventpulse/notificationservice/controller/NotificationController.java): `notification-service/src/main/java/com/eventpulse/notificationservice/controller/NotificationController.java`
- [Notification handling](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/notification-service/src/main/java/com/eventpulse/notificationservice/service/NotificationService.java): `notification-service/src/main/java/com/eventpulse/notificationservice/service/NotificationService.java`
- [Notification records](https://github.com/soltani-labs/eventpulse-gateway-security/blob/main/notification-service/src/main/java/com/eventpulse/notificationservice/entity/Notification.java): `notification-service/src/main/java/com/eventpulse/notificationservice/entity/Notification.java`

### Other components

- **User**

## Connections

- User → API gateway: sends requests
- API gateway → JWT utilities: uses (evidence: `api-gateway/src/main/java/com/eventpulse/apigateway/security/JwtAuthenticationFilter.java`)
- User → Auth endpoints: authenticates (evidence: `auth-service/src/main/java/com/eventpulse/authservice/controller/AuthController.java`)
- Auth endpoints → Auth workflows: delegates to (evidence: `auth-service/src/main/java/com/eventpulse/authservice/controller/AuthController.java`)
- Auth workflows → User repository: checks and saves (evidence: `auth-service/src/main/java/com/eventpulse/authservice/service/AuthService.java`)
- Auth workflows → JWT issuance: issues token (evidence: `auth-service/src/main/java/com/eventpulse/authservice/service/AuthService.java`)
- User repository → User records: persists (evidence: `auth-service/src/main/java/com/eventpulse/authservice/repository/UserRepository.java`)
- User lookup → User repository: looks up user (evidence: `auth-service/src/main/java/com/eventpulse/authservice/security/CustomUserDetailsService.java`)
- User → Event endpoints: requests event action (evidence: `event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java`)
- Event endpoints → Event management: delegates event calls (evidence: `event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java`)
- Event endpoints → Booking workflow: delegates booking (evidence: `event-service/src/main/java/com/eventpulse/eventservice/controller/EventController.java`)
- Event management → Event repository: reads and saves (evidence: `event-service/src/main/java/com/eventpulse/eventservice/service/EventService.java`)
- Booking workflow → Event repository: checks and updates (evidence: `event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java`)
- Booking workflow → Booking repository: checks and saves (evidence: `event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java`)
- Event repository → Event and booking records: persists (evidence: `event-service/src/main/java/com/eventpulse/eventservice/repository/EventRepository.java`)
- Booking repository → Booking records: persists (evidence: `event-service/src/main/java/com/eventpulse/eventservice/repository/BookingRepository.java`)
- Booking workflow → Notification client: sends notification (evidence: `event-service/src/main/java/com/eventpulse/eventservice/service/BookingService.java`)
- Notification client → Notification endpoints: submits notification
- Notification endpoints → Notification handling: delegates to (evidence: `notification-service/src/main/java/com/eventpulse/notificationservice/controller/NotificationController.java`)
- Notification handling → Notification records: creates and stores (evidence: `notification-service/src/main/java/com/eventpulse/notificationservice/service/NotificationService.java`)
