# render78/staybooker-backend architecture

> Architecture diagram of the GitHub repository render78/staybooker-backend, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/render78/staybooker-backend
- Repository: https://github.com/render78/staybooker-backend

## Overview

Staybooker is a Spring application with a visible user-registration workflow: a client submits user details and catalog IDs, the service resolves those IDs, builds a user record, and saves it. The source also defines nationality, marital-status, profession, and document-type catalogs. The graph includes those core entities and repositories; the excerpts do not show catalog-management endpoints, database configuration, or the behavior of the security rules, so those connections are not expanded.

Main entry points: [`src/main/java/com/staybooker/services/UserService.java`](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/services/UserService.java) (Registration service), [`src/main/java/com/staybooker/controllers/UserController.java`](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/controllers/UserController.java) (User endpoint), [`src/main/java/com/staybooker/repositories/auxiliary`](https://github.com/render78/staybooker-backend/tree/main/src/main/java/com/staybooker/repositories/auxiliary) (Catalog repositories), [`src/main/java/com/staybooker/repositories/UserRepository.java`](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/repositories/UserRepository.java) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and startup"]
  node_application["Application startup"]
  node_security["Security configuration"]
  node_user_controller["User endpoint"]
end

subgraph group_registration["User registration"]
  node_user_request["Registration request"]
  node_user_service["Registration service<br/>[UserService.java]"]
  node_user_entity["User record<br/>[UserEntity.java]"]
end

subgraph group_catalogs["Reference catalogs"]
  node_catalog_entities["Catalog records"]
  node_catalog_repositories["Catalog repositories"]
end

subgraph group_persistence["Persistence"]
  node_user_repository["User repository"]
  node_database[("Relational database")]
end

node_client(("API client"))

node_client -->|"submits registration"| node_user_controller
node_user_controller -->|"accepts body"| node_user_request
node_user_controller -->|"calls creation"| node_user_service
node_user_service -->|"reads fields"| node_user_request
node_user_service -->|"resolves catalog IDs"| node_catalog_repositories
node_user_service -->|"builds record"| node_user_entity
node_user_service -->|"saves record"| node_user_repository
node_user_repository -.->|"persists entity"| node_database
node_catalog_repositories -->|"repository entity types"| node_catalog_entities

click node_application "https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/StaybookerApplication.java"
click node_security "https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/configs/SecurityConfig.java"
click node_user_controller "https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/controllers/UserController.java"
click node_user_request "https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/dtos/UserRequestDTO.java"
click node_user_service "https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/services/UserService.java"
click node_user_entity "https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/entities/UserEntity.java"
click node_catalog_entities "https://github.com/render78/staybooker-backend/tree/main/src/main/java/com/staybooker/entities/auxiliary"
click node_catalog_repositories "https://github.com/render78/staybooker-backend/tree/main/src/main/java/com/staybooker/repositories/auxiliary"
click node_user_repository "https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/repositories/UserRepository.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_application,node_security,node_user_controller,node_client toneBlue
class node_user_request,node_user_service,node_user_entity toneAmber
class node_catalog_entities,node_catalog_repositories toneMint
class node_user_repository,node_database toneRose
```

## Components

### API and startup

- [Application startup](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/StaybookerApplication.java): `src/main/java/com/staybooker/StaybookerApplication.java`
- [Security configuration](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/configs/SecurityConfig.java): `src/main/java/com/staybooker/configs/SecurityConfig.java`
- [User endpoint](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/controllers/UserController.java): `src/main/java/com/staybooker/controllers/UserController.java`

### User registration

- [Registration request](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/dtos/UserRequestDTO.java): `src/main/java/com/staybooker/dtos/UserRequestDTO.java`
- [Registration service](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/services/UserService.java): `src/main/java/com/staybooker/services/UserService.java`
- [User record](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/entities/UserEntity.java): `src/main/java/com/staybooker/entities/UserEntity.java`

### Reference catalogs

- [Catalog records](https://github.com/render78/staybooker-backend/tree/main/src/main/java/com/staybooker/entities/auxiliary): `src/main/java/com/staybooker/entities/auxiliary`
- [Catalog repositories](https://github.com/render78/staybooker-backend/tree/main/src/main/java/com/staybooker/repositories/auxiliary): `src/main/java/com/staybooker/repositories/auxiliary`

### Persistence

- [User repository](https://github.com/render78/staybooker-backend/blob/main/src/main/java/com/staybooker/repositories/UserRepository.java): `src/main/java/com/staybooker/repositories/UserRepository.java`
- **Relational database**

### Other components

- **API client**

## Connections

- API client → User endpoint: submits registration (evidence: `src/main/java/com/staybooker/controllers/UserController.java`)
- User endpoint → Registration request: accepts body (evidence: `src/main/java/com/staybooker/controllers/UserController.java`)
- User endpoint → Registration service: calls creation (evidence: `src/main/java/com/staybooker/controllers/UserController.java`)
- Registration service → Registration request: reads fields (evidence: `src/main/java/com/staybooker/services/UserService.java`)
- Registration service → Catalog repositories: resolves catalog IDs (evidence: `src/main/java/com/staybooker/services/UserService.java`)
- Registration service → User record: builds record (evidence: `src/main/java/com/staybooker/services/UserService.java`)
- Registration service → User repository: saves record (evidence: `src/main/java/com/staybooker/services/UserService.java`)
- User repository → Relational database: persists entity (evidence: `src/main/java/com/staybooker/repositories/UserRepository.java`)
- Catalog repositories → Catalog records: repository entity types (evidence: `src/main/java/com/staybooker/repositories/auxiliary/NationalityRepository.java`)
