# hongik-grad-project-2026/backend architecture

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

- Interactive diagram: https://gitdiagram.com/hongik-grad-project-2026/backend
- Repository: https://github.com/hongik-grad-project-2026/backend

## Overview

Mulmi Backend is a university equipment-lending application. Its clearest documented workflow is staff handling a rental: the admin rental API delegates approval, checkout, return, and rental-photo operations to the admin rental service. Students also have rental and account capabilities, while the repository tree shows inventory, favorites, notices, and semester scheduling. Evidence is limited: the README identifies only the project, and the sampled source does not show implementations or wiring for most domains, so unsupported connections are omitted.

Main entry points: [`src/main/java/com/mulmi/backend/domain/rental/controller/AdminRentalController.java`](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/controller/AdminRentalController.java) (Admin rental API), [`src/main/java/com/mulmi/backend/domain/equipment/controller/AdminEquipmentModelController.java`](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/equipment/controller/AdminEquipmentModelController.java) (Model management API), [`src/main/java/com/mulmi/backend/domain/user/controller/AdminUserController.java`](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/controller/AdminUserController.java) (Admin user API), [`src/main/java/com/mulmi/backend/domain/rental/service/AdminRentalService.java`](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/service/AdminRentalService.java) (Rental processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_lending["Rental operations"]
  node_admin_rental_api["Admin rental API"]
  node_admin_rental_service["Rental processing"]
  node_rental_domain["Student rentals"]
  node_rental_state[("Rental records<br/>[Rental.java]")]
  node_rental_scheduler["No-show scheduling"]
end

subgraph group_inventory["Equipment inventory"]
  node_equipment_api["Model management API"]
  node_equipment_service["Model and item services"]
  node_equipment_domain["Categories and items"]
  node_equipment_state[("Equipment records<br/>[EquipmentItem.java]")]
end

subgraph group_accounts["Identity and access"]
  node_user_api["Admin user API"]
  node_user_service["Account services<br/>[UserService.java]"]
  node_user_state[("User records<br/>[User.java]")]
  node_auth_domain["Authentication"]
end

subgraph group_campus["Campus services"]
  node_favorites["Saved equipment"]
  node_notices["Notices and attachments"]
  node_semester["Semester schedule"]
  node_storage["S3 file storage"]
end

node_staff(("Assistant / worker"))
node_student(("Student"))

node_staff -->|"uses"| node_admin_rental_api
node_admin_rental_api -->|"delegates to"| node_admin_rental_service
node_student -->|"uses"| node_equipment_api
node_equipment_api -->|"delegates to"| node_equipment_service
node_staff -->|"uses"| node_user_api
node_user_api -->|"delegates to"| node_user_service

click node_admin_rental_api "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/controller/AdminRentalController.java"
click node_admin_rental_service "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/service/AdminRentalService.java"
click node_rental_domain "https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/rental"
click node_rental_state "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/entity/Rental.java"
click node_rental_scheduler "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/scheduler/RentalNoShowScheduler.java"
click node_equipment_api "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/equipment/controller/AdminEquipmentModelController.java"
click node_equipment_service "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/equipment/service/EquipmentModelService.java"
click node_equipment_domain "https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/equipment"
click node_equipment_state "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/equipment/entity/EquipmentItem.java"
click node_user_api "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/controller/AdminUserController.java"
click node_user_service "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/service/UserService.java"
click node_user_state "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/entity/User.java"
click node_auth_domain "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/controller/AuthController.java"
click node_favorites "https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/favorite"
click node_notices "https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/notice"
click node_semester "https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/semester"
click node_storage "https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/global/storage/S3StorageService.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_admin_rental_api,node_admin_rental_service,node_rental_domain,node_rental_state,node_rental_scheduler toneBlue
class node_equipment_api,node_equipment_service,node_equipment_domain,node_equipment_state toneAmber
class node_user_api,node_user_service,node_user_state,node_auth_domain toneMint
class node_favorites,node_notices,node_semester,node_storage,node_staff toneRose
class node_student toneIndigo
```

## Components

### Rental operations

- [Admin rental API](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/controller/AdminRentalController.java): `src/main/java/com/mulmi/backend/domain/rental/controller/AdminRentalController.java`
- [Rental processing](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/service/AdminRentalService.java): `src/main/java/com/mulmi/backend/domain/rental/service/AdminRentalService.java`
- [Student rentals](https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/rental): `src/main/java/com/mulmi/backend/domain/rental`
- [Rental records](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/entity/Rental.java): `src/main/java/com/mulmi/backend/domain/rental/entity/Rental.java`
- [No-show scheduling](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/rental/scheduler/RentalNoShowScheduler.java): `src/main/java/com/mulmi/backend/domain/rental/scheduler/RentalNoShowScheduler.java`

### Equipment inventory

- [Model management API](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/equipment/controller/AdminEquipmentModelController.java): `src/main/java/com/mulmi/backend/domain/equipment/controller/AdminEquipmentModelController.java`
- [Model and item services](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/equipment/service/EquipmentModelService.java): `src/main/java/com/mulmi/backend/domain/equipment/service/EquipmentModelService.java`
- [Categories and items](https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/equipment): `src/main/java/com/mulmi/backend/domain/equipment`
- [Equipment records](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/equipment/entity/EquipmentItem.java): `src/main/java/com/mulmi/backend/domain/equipment/entity/EquipmentItem.java`

### Identity and access

- [Admin user API](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/controller/AdminUserController.java): `src/main/java/com/mulmi/backend/domain/user/controller/AdminUserController.java`
- [Account services](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/service/UserService.java): `src/main/java/com/mulmi/backend/domain/user/service/UserService.java`
- [User records](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/entity/User.java): `src/main/java/com/mulmi/backend/domain/user/entity/User.java`
- [Authentication](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/domain/user/controller/AuthController.java): `src/main/java/com/mulmi/backend/domain/user/controller/AuthController.java`

### Campus services

- [Saved equipment](https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/favorite): `src/main/java/com/mulmi/backend/domain/favorite`
- [Notices and attachments](https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/notice): `src/main/java/com/mulmi/backend/domain/notice`
- [Semester schedule](https://github.com/hongik-grad-project-2026/backend/tree/dev/src/main/java/com/mulmi/backend/domain/semester): `src/main/java/com/mulmi/backend/domain/semester`
- [S3 file storage](https://github.com/hongik-grad-project-2026/backend/blob/dev/src/main/java/com/mulmi/backend/global/storage/S3StorageService.java): `src/main/java/com/mulmi/backend/global/storage/S3StorageService.java`

### Other components

- **Assistant / worker**
- **Student**

## Connections

- Assistant / worker → Admin rental API: uses (evidence: `src/main/java/com/mulmi/backend/domain/rental/controller/AdminRentalController.java`)
- Admin rental API → Rental processing: delegates to (evidence: `src/main/java/com/mulmi/backend/domain/rental/controller/AdminRentalController.java`)
- Student → Model management API: uses (evidence: `src/main/java/com/mulmi/backend/domain/equipment/controller/AdminEquipmentModelController.java`)
- Model management API → Model and item services: delegates to (evidence: `src/main/java/com/mulmi/backend/domain/equipment/controller/AdminEquipmentModelController.java`)
- Assistant / worker → Admin user API: uses (evidence: `src/main/java/com/mulmi/backend/domain/user/controller/AdminUserController.java`)
- Admin user API → Account services: delegates to (evidence: `src/main/java/com/mulmi/backend/domain/user/controller/AdminUserController.java`)
