# haevneu/worksuite-auth-backend architecture

> Architecture diagram of the GitHub repository haevneu/worksuite-auth-backend, 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/haevneu/worksuite-auth-backend
- Repository: https://github.com/haevneu/worksuite-auth-backend

## Overview

WorkSuite Auth Backend provides account management, credential authentication, JWT-based request authentication, and user subscription licensing. The main workflow is registration or login, followed by bearer-token authentication on protected requests; users can then manage account credentials or query, assign, and renew their license. Controllers delegate to domain services, which use JPA repositories and JWT utilities. The README gives only the product name, and several configuration and runtime files were not sampled, so uncertain security wiring is omitted.

Main entry points: [`src/main/java/de/haevn/identity/user/UserService.java`](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserService.java) (User Service), [`src/main/java/de/haevn/identity/license/LicenseService.java`](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseService.java) (License Service), [`src/main/java/de/haevn/identity/user/UserController.java`](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserController.java) (User API), [`src/main/java/de/haevn/identity/license/LicenseController.java`](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseController.java) (License API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_user_controller["User API"]
  node_license_controller["License API"]
  node_rest_annotation["REST Mapping"]
end

subgraph group_identity["Identity and Tokens"]
  node_user_service["User Service<br/>[UserService.java]"]
  node_jwt_service["JWT Service<br/>[JwtService.java]"]
  node_jwt_filter["JWT Filter"]
  node_application["Application"]
  node_security_config["Security Config"]
end

subgraph group_licensing["Licensing"]
  node_license_service["License Service"]
  node_license_status["License Status"]
end

subgraph group_persistence["Persistence"]
  node_user_repository["User Repository"]
  node_license_repository["License Repository"]
  node_user_entity["User Entity<br/>[User.java]"]
  node_license_entity["License Entity<br/>[License.java]"]
end

node_client(("API Client"))
node_database[("PostgreSQL")]

node_client -->|"sends requests"| node_user_controller
node_client -->|"sends requests"| node_license_controller
node_user_controller -->|"delegates"| node_user_service
node_license_controller -->|"delegates"| node_license_service
node_user_service -->|"reads and writes"| node_user_repository
node_user_service -->|"issues tokens"| node_jwt_service
node_jwt_filter -->|"validates tokens"| node_jwt_service
node_jwt_filter -->|"sets auth context"| node_user_service
node_license_service -->|"resolves current user"| node_user_service
node_license_service -->|"reads and writes"| node_license_repository
node_license_service -->|"builds status"| node_license_status
node_user_repository -->|"persists users"| node_database
node_license_repository -->|"persists licenses"| node_database
node_user_entity -->|"repository entity"| node_user_repository
node_license_entity -->|"repository entity"| node_license_repository
node_user_service -->|"returns account result"| node_user_controller
node_license_service -->|"returns license result"| node_license_controller

click node_user_controller "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserController.java"
click node_license_controller "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseController.java"
click node_user_service "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserService.java"
click node_jwt_service "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/common/JwtService.java"
click node_jwt_filter "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/config/JwtAuthenticationFilter.java"
click node_rest_annotation "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/common/RestApiController.java"
click node_license_service "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseService.java"
click node_license_status "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseStatusResponse.java"
click node_user_repository "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserRepository.java"
click node_license_repository "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseRepository.java"
click node_user_entity "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/User.java"
click node_license_entity "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/License.java"
click node_application "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/IdentityApplication.java"
click node_security_config "https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/config/SecurityConfig.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_controller,node_license_controller,node_rest_annotation,node_client toneBlue
class node_user_service,node_jwt_service,node_jwt_filter,node_application,node_security_config,node_database toneAmber
class node_license_service,node_license_status toneMint
class node_user_repository,node_license_repository,node_user_entity,node_license_entity toneRose
```

## Components

### REST API

- [User API](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserController.java): `src/main/java/de/haevn/identity/user/UserController.java`
- [License API](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseController.java): `src/main/java/de/haevn/identity/license/LicenseController.java`
- [REST Mapping](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/common/RestApiController.java): `src/main/java/de/haevn/identity/common/RestApiController.java`

### Identity and Tokens

- [User Service](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserService.java): `src/main/java/de/haevn/identity/user/UserService.java`
- [JWT Service](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/common/JwtService.java): `src/main/java/de/haevn/identity/common/JwtService.java`
- [JWT Filter](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/config/JwtAuthenticationFilter.java): `src/main/java/de/haevn/identity/config/JwtAuthenticationFilter.java`
- [Application](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/IdentityApplication.java): `src/main/java/de/haevn/identity/IdentityApplication.java`
- [Security Config](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/config/SecurityConfig.java): `src/main/java/de/haevn/identity/config/SecurityConfig.java`

### Licensing

- [License Service](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseService.java): `src/main/java/de/haevn/identity/license/LicenseService.java`
- [License Status](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseStatusResponse.java): `src/main/java/de/haevn/identity/license/LicenseStatusResponse.java`

### Persistence

- [User Repository](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/UserRepository.java): `src/main/java/de/haevn/identity/user/UserRepository.java`
- [License Repository](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/LicenseRepository.java): `src/main/java/de/haevn/identity/license/LicenseRepository.java`
- [User Entity](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/user/User.java): `src/main/java/de/haevn/identity/user/User.java`
- [License Entity](https://github.com/haevneu/worksuite-auth-backend/blob/main/src/main/java/de/haevn/identity/license/License.java): `src/main/java/de/haevn/identity/license/License.java`

### Other components

- **API Client**
- **PostgreSQL**

## Connections

- API Client → User API: sends requests
- API Client → License API: sends requests
- User API → User Service: delegates
- License API → License Service: delegates
- User Service → User Repository: reads and writes
- User Service → JWT Service: issues tokens
- JWT Filter → JWT Service: validates tokens
- JWT Filter → User Service: sets auth context
- License Service → User Service: resolves current user
- License Service → License Repository: reads and writes
- License Service → License Status: builds status
- User Repository → PostgreSQL: persists users
- License Repository → PostgreSQL: persists licenses
- User Entity → User Repository: repository entity
- License Entity → License Repository: repository entity
- User Service → User API: returns account result
- License Service → License API: returns license result
