# thejamesmorra-eng/event-manager-platform architecture

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

- Interactive diagram: https://gitdiagram.com/thejamesmorra-eng/event-manager-platform
- Repository: https://github.com/thejamesmorra-eng/event-manager-platform

## Overview

Event Manager is a Spring Boot REST starter whose implemented workflows cover account registration and lookup, JWT login, and location CRUD. Controllers delegate to services, which use repositories for persistence; authentication also uses Spring Security and token generation. The README lists Kafka and Redis infrastructure, but the sampled runtime code does not establish product flows using them, so they are omitted. Source for the security configuration and notification contract implementation was not sampled.

Main entry points: [`event-manager/src/main/java/dev/sorokin/eventmanager/repository/UserRepository.java`](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/repository/UserRepository.java) (User repository), [`event-manager/src/main/java/dev/sorokin/eventmanager/service/UserService.java`](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/UserService.java) (User service), [`event-manager/src/main/java/dev/sorokin/eventmanager/service/AuthService.java`](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/AuthService.java) (Auth service), [`event-manager/src/main/java/dev/sorokin/eventmanager/service/LocationService.java`](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/LocationService.java) (Location service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_user_api["User endpoints"]
  node_auth_api["Auth endpoint"]
  node_location_api["Location endpoints"]
end

subgraph group_accounts["Accounts and Auth"]
  node_user_service["User service<br/>[UserService.java]"]
  node_auth_service["Auth service<br/>[AuthService.java]"]
  node_jwt["JWT service<br/>[JwtService.java]"]
  node_user_details["User details"]
end

subgraph group_locations["Locations"]
  node_location_service["Location service"]
end

subgraph group_storage["Persistence"]
  node_user_repo["User repository"]
  node_location_repo["Location repository"]
  node_postgres[("PostgreSQL")]
end

node_client(("API client"))
node_spring_auth["Spring authentication"]

node_client -->|"registers or looks up"| node_user_api
node_client -->|"submits credentials"| node_auth_api
node_client -->|"manages locations"| node_location_api
node_user_api -->|"delegates"| node_user_service
node_auth_api -->|"delegates"| node_auth_service
node_location_api -->|"delegates"| node_location_service
node_user_service -->|"checks and saves"| node_user_repo
node_user_service -->|"reads users"| node_user_repo
node_user_service -->|"persists via"| node_postgres
node_location_service -->|"queries and writes"| node_location_repo
node_location_service -->|"persists via"| node_postgres
node_auth_service -->|"authenticates"| node_spring_auth
node_auth_service -->|"loads user"| node_user_repo
node_auth_service -->|"generates token"| node_jwt
node_spring_auth -->|"loads account details"| node_user_details
node_user_details -->|"finds account"| node_user_repo
node_user_repo -->|"reads and writes"| node_postgres
node_location_repo -->|"reads and writes"| node_postgres

click node_user_api "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/controller/UserController.java"
click node_auth_api "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/controller/AuthController.java"
click node_location_api "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/controller/LocationController.java"
click node_user_service "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/UserService.java"
click node_auth_service "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/AuthService.java"
click node_jwt "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/security/JwtService.java"
click node_user_details "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/security/CustomUserDetailsService.java"
click node_location_service "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/LocationService.java"
click node_user_repo "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/repository/UserRepository.java"
click node_location_repo "https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/repository/LocationRepository.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_user_api,node_auth_api,node_location_api,node_client toneBlue
class node_user_service,node_auth_service,node_jwt,node_user_details toneAmber
class node_location_service toneMint
class node_user_repo,node_location_repo,node_postgres toneRose
class node_spring_auth toneIndigo
```

## Components

### REST API

- [User endpoints](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/controller/UserController.java): `event-manager/src/main/java/dev/sorokin/eventmanager/controller/UserController.java`
- [Auth endpoint](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/controller/AuthController.java): `event-manager/src/main/java/dev/sorokin/eventmanager/controller/AuthController.java`
- [Location endpoints](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/controller/LocationController.java): `event-manager/src/main/java/dev/sorokin/eventmanager/controller/LocationController.java`

### Accounts and Auth

- [User service](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/UserService.java): `event-manager/src/main/java/dev/sorokin/eventmanager/service/UserService.java`
- [Auth service](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/AuthService.java): `event-manager/src/main/java/dev/sorokin/eventmanager/service/AuthService.java`
- [JWT service](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/security/JwtService.java): `event-manager/src/main/java/dev/sorokin/eventmanager/security/JwtService.java`
- [User details](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/security/CustomUserDetailsService.java): `event-manager/src/main/java/dev/sorokin/eventmanager/security/CustomUserDetailsService.java`

### Locations

- [Location service](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/service/LocationService.java): `event-manager/src/main/java/dev/sorokin/eventmanager/service/LocationService.java`

### Persistence

- [User repository](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/repository/UserRepository.java): `event-manager/src/main/java/dev/sorokin/eventmanager/repository/UserRepository.java`
- [Location repository](https://github.com/thejamesmorra-eng/event-manager-platform/blob/main/event-manager/src/main/java/dev/sorokin/eventmanager/repository/LocationRepository.java): `event-manager/src/main/java/dev/sorokin/eventmanager/repository/LocationRepository.java`
- **PostgreSQL**

### Other components

- **API client**
- **Spring authentication**

## Connections

- API client → User endpoints: registers or looks up
- API client → Auth endpoint: submits credentials
- API client → Location endpoints: manages locations
- User endpoints → User service: delegates
- Auth endpoint → Auth service: delegates
- Location endpoints → Location service: delegates
- User service → User repository: checks and saves
- User service → User repository: reads users
- User service → PostgreSQL: persists via
- Location service → Location repository: queries and writes
- Location service → PostgreSQL: persists via
- Auth service → Spring authentication: authenticates
- Auth service → User repository: loads user
- Auth service → JWT service: generates token
- Spring authentication → User details: loads account details
- User details → User repository: finds account
- User repository → PostgreSQL: reads and writes
- Location repository → PostgreSQL: reads and writes
