# ilmiraryakhimova/rentalmanager-main architecture

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

- Interactive diagram: https://gitdiagram.com/ilmiraryakhimova/rentalmanager-main
- Repository: https://github.com/ilmiraryakhimova/rentalmanager-main

## Overview

Rental Manager is a Spring backend for finding and managing rental apartments and bookings, with account registration and token-based sign-in. The main user flow searches or manages listings, then creates and tracks bookings; controllers delegate those requests to domain services, which use repositories for persistence. Registration also initiates email verification. The sampled code confirms apartment and booking controller delegation and several authentication actions; implementation details for unsampled services and security wiring are not inferred.

Main entry points: [`main-service/src/main/java/com/rental/manager/entities`](https://github.com/ilmiraryakhimova/rentalmanager-main/tree/main/main-service/src/main/java/com/rental/manager/entities) (Rental data), [`main-service/src/main/java/com/rental/manager/service/impl/ApartmentServiceImpl.java`](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/ApartmentServiceImpl.java) (Apartment service), [`main-service/src/main/java/com/rental/manager/security/auth/AuthServiceImpl.java`](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/security/auth/AuthServiceImpl.java) (Authentication service), [`main-service/src/main/java/com/rental/manager/repository/UserRepository.java`](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/UserRepository.java) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_apartment_api["Apartment API"]
  node_booking_api["Booking API"]
  node_auth_api["Authentication API"]
  node_user_api["User API"]
end

subgraph group_domain["Rental Operations"]
  node_apartment_svc["Apartment service"]
  node_booking_svc["Booking service"]
  node_address_svc["Address service"]
  node_user_svc["User service"]
end

subgraph group_identity["Identity and Security"]
  node_auth_svc["Authentication service"]
  node_jwt_svc["JWT service"]
  node_email_svc["Email service"]
end

subgraph group_data["Persistence"]
  node_apartment_repo["Apartment repository"]
  node_booking_repo["Booking repository"]
  node_address_repo["Address repository"]
  node_user_repo["User repository"]
  node_token_repo["Verification token repository"]
  node_rental_db[("Rental data")]
end

node_guest(("Guest or owner"))
node_mail(("Email delivery"))

node_guest -->|"search listings"| node_apartment_api
node_guest -->|"manage bookings"| node_booking_api
node_guest -->|"authenticate"| node_auth_api
node_guest -->|"manage profile"| node_user_api
node_apartment_api -->|"delegates"| node_apartment_svc
node_booking_api -->|"delegates"| node_booking_svc
node_auth_svc -->|"reads and saves"| node_user_repo
node_auth_svc -->|"creates and validates tokens"| node_jwt_svc
node_auth_svc -->|"requests verification email"| node_email_svc
node_apartment_svc -->|"queries and saves"| node_apartment_repo
node_apartment_svc -->|"resolves and saves address"| node_address_repo
node_apartment_svc -->|"resolves and saves owner"| node_user_repo
node_email_svc -.->|"sends email"| node_mail
node_apartment_repo -->|"persists listings"| node_rental_db
node_booking_repo -->|"persists bookings"| node_rental_db
node_address_repo -->|"persists addresses"| node_rental_db
node_user_repo -->|"persists users"| node_rental_db
node_token_repo -->|"persists tokens"| node_rental_db

click node_apartment_api "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/ApartmentController.java"
click node_booking_api "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/BookingController.java"
click node_auth_api "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/AuthController.java"
click node_user_api "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/UserController.java"
click node_apartment_svc "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/ApartmentServiceImpl.java"
click node_booking_svc "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/BookingServiceImpl.java"
click node_address_svc "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/AddressServiceImpl.java"
click node_user_svc "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/UserServiceImpl.java"
click node_auth_svc "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/security/auth/AuthServiceImpl.java"
click node_jwt_svc "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/security/jwt/JwtServiceImpl.java"
click node_email_svc "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/EmailServiceImpl.java"
click node_apartment_repo "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/ApartmentRepository.java"
click node_booking_repo "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/BookingRepository.java"
click node_address_repo "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/AddressRepository.java"
click node_user_repo "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/UserRepository.java"
click node_token_repo "https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/EmailVerificationTokenRepository.java"
click node_rental_db "https://github.com/ilmiraryakhimova/rentalmanager-main/tree/main/main-service/src/main/java/com/rental/manager/entities"

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_apartment_api,node_booking_api,node_auth_api,node_user_api toneBlue
class node_apartment_svc,node_booking_svc,node_address_svc,node_user_svc toneAmber
class node_auth_svc,node_jwt_svc,node_email_svc toneMint
class node_apartment_repo,node_booking_repo,node_address_repo,node_user_repo,node_token_repo,node_rental_db toneRose
class node_guest,node_mail toneIndigo
```

## Components

### HTTP API

- [Apartment API](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/ApartmentController.java): `main-service/src/main/java/com/rental/manager/web/controller/ApartmentController.java`
- [Booking API](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/BookingController.java): `main-service/src/main/java/com/rental/manager/web/controller/BookingController.java`
- [Authentication API](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/AuthController.java): `main-service/src/main/java/com/rental/manager/web/controller/AuthController.java`
- [User API](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/web/controller/UserController.java): `main-service/src/main/java/com/rental/manager/web/controller/UserController.java`

### Rental Operations

- [Apartment service](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/ApartmentServiceImpl.java): `main-service/src/main/java/com/rental/manager/service/impl/ApartmentServiceImpl.java`
- [Booking service](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/BookingServiceImpl.java): `main-service/src/main/java/com/rental/manager/service/impl/BookingServiceImpl.java`
- [Address service](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/AddressServiceImpl.java): `main-service/src/main/java/com/rental/manager/service/impl/AddressServiceImpl.java`
- [User service](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/UserServiceImpl.java): `main-service/src/main/java/com/rental/manager/service/impl/UserServiceImpl.java`

### Identity and Security

- [Authentication service](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/security/auth/AuthServiceImpl.java): `main-service/src/main/java/com/rental/manager/security/auth/AuthServiceImpl.java`
- [JWT service](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/security/jwt/JwtServiceImpl.java): `main-service/src/main/java/com/rental/manager/security/jwt/JwtServiceImpl.java`
- [Email service](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/service/impl/EmailServiceImpl.java): `main-service/src/main/java/com/rental/manager/service/impl/EmailServiceImpl.java`

### Persistence

- [Apartment repository](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/ApartmentRepository.java): `main-service/src/main/java/com/rental/manager/repository/ApartmentRepository.java`
- [Booking repository](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/BookingRepository.java): `main-service/src/main/java/com/rental/manager/repository/BookingRepository.java`
- [Address repository](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/AddressRepository.java): `main-service/src/main/java/com/rental/manager/repository/AddressRepository.java`
- [User repository](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/UserRepository.java): `main-service/src/main/java/com/rental/manager/repository/UserRepository.java`
- [Verification token repository](https://github.com/ilmiraryakhimova/rentalmanager-main/blob/main/main-service/src/main/java/com/rental/manager/repository/EmailVerificationTokenRepository.java): `main-service/src/main/java/com/rental/manager/repository/EmailVerificationTokenRepository.java`
- [Rental data](https://github.com/ilmiraryakhimova/rentalmanager-main/tree/main/main-service/src/main/java/com/rental/manager/entities): `main-service/src/main/java/com/rental/manager/entities`

### Other components

- **Guest or owner**
- **Email delivery**

## Connections

- Guest or owner → Apartment API: search listings
- Guest or owner → Booking API: manage bookings
- Guest or owner → Authentication API: authenticate
- Guest or owner → User API: manage profile
- Apartment API → Apartment service: delegates
- Booking API → Booking service: delegates
- Authentication service → User repository: reads and saves
- Authentication service → JWT service: creates and validates tokens
- Authentication service → Email service: requests verification email
- Apartment service → Apartment repository: queries and saves
- Apartment service → Address repository: resolves and saves address
- Apartment service → User repository: resolves and saves owner
- Email service → Email delivery: sends email
- Apartment repository → Rental data: persists listings
- Booking repository → Rental data: persists bookings
- Address repository → Rental data: persists addresses
- User repository → Rental data: persists users
- Verification token repository → Rental data: persists tokens
