# mthbttrfl/cloud-storage-api architecture

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

- Interactive diagram: https://gitdiagram.com/mthbttrfl/cloud-storage-api
- Repository: https://github.com/mthbttrfl/cloud-storage-api

## Overview

Cloud Storage API is a REST backend for user sessions and file management: clients authenticate, browse directories, upload or download files and folders, and create, move, search, or delete resources. The tree and README identify the controllers, services, and MinIO-backed storage layers; sampled source does not show their internal call wiring, so the diagram keeps interactions at documented domain boundaries. PostgreSQL, MinIO, and Redis are suggested by the repository configuration and dependencies; their precise runtime connections are not verified here.

Main entry points: [`src/main/java/org/example/cloudstorageapi/service/storage/minio`](https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/service/storage/minio) (MinIO adapters), [`src/main/java/org/example/cloudstorageapi/controller/ResourceController.java`](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/ResourceController.java) (Resource endpoints), [`src/main/java/org/example/cloudstorageapi/controller/AuthController.java`](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/AuthController.java) (Auth endpoints), [`src/main/java/org/example/cloudstorageapi/service/user/UserAccountService.java`](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/user/UserAccountService.java) (User accounts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_auth_api["Auth endpoints"]
  node_directory_api["Directory endpoints"]
  node_resource_api["Resource endpoints"]
  node_user_api["User endpoints"]
end

subgraph group_identity["Identity"]
  node_auth_service["Authentication service"]
  node_user_auth["User authentication"]
  node_security["Security components"]
  node_registration["User registration"]
  node_account["User accounts"]
  node_user_repo["User repository"]
end

subgraph group_storage["File storage"]
  node_directory_service["Directory service"]
  node_resource_service["Resource service"]
  node_upload_service["Upload service"]
  node_download_service["Download service"]
  node_minio_services["MinIO adapters"]
  node_minio_operations["MinIO operations"]
  node_path_resolution["Path resolution"]
end

subgraph group_infra["Persistence and configuration"]
  node_postgres[("PostgreSQL")]
  node_minio[("MinIO object store")]
  node_redis[("Redis sessions")]
  node_app_config["Application configuration"]
end

node_client(("API client"))

node_client -->|"auth requests"| node_auth_api
node_client -->|"directory requests"| node_directory_api
node_client -->|"resource requests"| node_resource_api
node_client -->|"user requests"| node_user_api
node_auth_api -->|"authentication"| node_auth_service
node_auth_api -->|"registers users"| node_registration
node_user_api -->|"account actions"| node_account
node_directory_api -->|"directory actions"| node_directory_service
node_resource_api -->|"resource actions"| node_resource_service
node_resource_api -->|"uploads"| node_upload_service
node_resource_api -->|"downloads"| node_download_service
node_auth_service -->|"authenticates"| node_user_auth
node_registration -->|"creates account"| node_account
node_account -->|"user data"| node_user_repo
node_user_repo -->|"persists users"| node_postgres
node_directory_service -->|"directory operations"| node_minio_services
node_resource_service -->|"resource operations"| node_minio_services
node_upload_service -->|"uploads content"| node_minio_services
node_download_service -->|"retrieves content"| node_minio_services
node_minio_services -->|"storage operations"| node_minio_operations
node_minio_operations -->|"reads and writes"| node_minio
node_minio_services -->|"resolves paths"| node_path_resolution
node_app_config -.->|"configures client"| node_minio
node_app_config -.->|"configures sessions"| node_redis
node_security -.->|"stores sessions"| node_redis

click node_auth_api "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/AuthController.java"
click node_directory_api "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/DirectoryController.java"
click node_resource_api "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/ResourceController.java"
click node_user_api "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/UserController.java"
click node_auth_service "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/auth/AuthenticationService.java"
click node_user_auth "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/auth/UserAuthenticationService.java"
click node_security "https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/security"
click node_registration "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/user/UserRegistrationService.java"
click node_account "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/user/UserAccountService.java"
click node_user_repo "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/repository/UserRepository.java"
click node_directory_service "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageDirectoryService.java"
click node_resource_service "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageResourceService.java"
click node_upload_service "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageUploadService.java"
click node_download_service "https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageDownloadService.java"
click node_minio_services "https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/service/storage/minio"
click node_minio_operations "https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/storage/minio/operation"
click node_path_resolution "https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/storage/minio/resolver"
click node_app_config "https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/config"

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_auth_api,node_directory_api,node_resource_api,node_user_api,node_client toneBlue
class node_auth_service,node_user_auth,node_security,node_registration,node_account,node_user_repo toneAmber
class node_directory_service,node_resource_service,node_upload_service,node_download_service,node_minio_services,node_minio_operations,node_path_resolution toneMint
class node_postgres,node_minio,node_redis,node_app_config toneRose
```

## Components

### REST API

- [Auth endpoints](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/AuthController.java): `src/main/java/org/example/cloudstorageapi/controller/AuthController.java`
- [Directory endpoints](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/DirectoryController.java): `src/main/java/org/example/cloudstorageapi/controller/DirectoryController.java`
- [Resource endpoints](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/ResourceController.java): `src/main/java/org/example/cloudstorageapi/controller/ResourceController.java`
- [User endpoints](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/controller/UserController.java): `src/main/java/org/example/cloudstorageapi/controller/UserController.java`

### Identity

- [Authentication service](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/auth/AuthenticationService.java): `src/main/java/org/example/cloudstorageapi/service/auth/AuthenticationService.java`
- [User authentication](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/auth/UserAuthenticationService.java): `src/main/java/org/example/cloudstorageapi/service/auth/UserAuthenticationService.java`
- [Security components](https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/security): `src/main/java/org/example/cloudstorageapi/security`
- [User registration](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/user/UserRegistrationService.java): `src/main/java/org/example/cloudstorageapi/service/user/UserRegistrationService.java`
- [User accounts](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/user/UserAccountService.java): `src/main/java/org/example/cloudstorageapi/service/user/UserAccountService.java`
- [User repository](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/repository/UserRepository.java): `src/main/java/org/example/cloudstorageapi/repository/UserRepository.java`

### File storage

- [Directory service](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageDirectoryService.java): `src/main/java/org/example/cloudstorageapi/service/storage/StorageDirectoryService.java`
- [Resource service](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageResourceService.java): `src/main/java/org/example/cloudstorageapi/service/storage/StorageResourceService.java`
- [Upload service](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageUploadService.java): `src/main/java/org/example/cloudstorageapi/service/storage/StorageUploadService.java`
- [Download service](https://github.com/mthbttrfl/cloud-storage-api/blob/master/src/main/java/org/example/cloudstorageapi/service/storage/StorageDownloadService.java): `src/main/java/org/example/cloudstorageapi/service/storage/StorageDownloadService.java`
- [MinIO adapters](https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/service/storage/minio): `src/main/java/org/example/cloudstorageapi/service/storage/minio`
- [MinIO operations](https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/storage/minio/operation): `src/main/java/org/example/cloudstorageapi/storage/minio/operation`
- [Path resolution](https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/storage/minio/resolver): `src/main/java/org/example/cloudstorageapi/storage/minio/resolver`

### Persistence and configuration

- **PostgreSQL**
- **MinIO object store**
- **Redis sessions**
- [Application configuration](https://github.com/mthbttrfl/cloud-storage-api/tree/master/src/main/java/org/example/cloudstorageapi/config): `src/main/java/org/example/cloudstorageapi/config`

### Other components

- **API client**

## Connections

- API client → Auth endpoints: auth requests
- API client → Directory endpoints: directory requests
- API client → Resource endpoints: resource requests
- API client → User endpoints: user requests
- Auth endpoints → Authentication service: authentication
- Auth endpoints → User registration: registers users
- User endpoints → User accounts: account actions
- Directory endpoints → Directory service: directory actions
- Resource endpoints → Resource service: resource actions
- Resource endpoints → Upload service: uploads
- Resource endpoints → Download service: downloads
- Authentication service → User authentication: authenticates
- User registration → User accounts: creates account
- User accounts → User repository: user data
- User repository → PostgreSQL: persists users
- Directory service → MinIO adapters: directory operations
- Resource service → MinIO adapters: resource operations
- Upload service → MinIO adapters: uploads content
- Download service → MinIO adapters: retrieves content
- MinIO adapters → MinIO operations: storage operations
- MinIO operations → MinIO object store: reads and writes
- MinIO adapters → Path resolution: resolves paths
- Application configuration → MinIO object store: configures client
- Application configuration → Redis sessions: configures sessions
- Security components → Redis sessions: stores sessions
