# h5misi/sound-cloud-using-spring-boot architecture

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

- Interactive diagram: https://gitdiagram.com/h5misi/sound-cloud-using-spring-boot
- Repository: https://github.com/h5misi/sound-cloud-using-spring-boot

## Overview

This is a Spring Boot authentication and user-account backend. Its documented user-facing workflow covers registration and login, password-reset initiation and completion, with email delivery and JWT-based authentication as supporting capabilities. The tree contains no API controllers, and the README provides no architecture detail; therefore the entry point and wiring from AuthService to token, email, and persistence operations cannot be established from the sampled source. The graph shows only documented operations and directly evidenced calls.

Main entry points: [`src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/SmtpEmailService.java`](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/SmtpEmailService.java) (SMTP sender), [`src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/repository/UserRepository.java`](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/repository/UserRepository.java) (User repository), [`src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/EmailService.java`](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/EmailService.java) (Email service), [`src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/CustomUserDetailsService.java`](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/CustomUserDetailsService.java) (User details loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Account workflows"]
  node_auth_service["Auth operations<br/>[AuthService.java]"]
  node_email_service["Email service<br/>[EmailService.java]"]
  node_smtp_sender["SMTP sender"]
end

subgraph group_security["Authentication security"]
  node_jwt_service["JWT service<br/>[JwtService.java]"]
  node_jwt_filter["JWT filter"]
  node_security_config["Security config"]
  node_user_details["User details loader"]
end

subgraph group_persistence["User and token data"]
  node_user_repo[("User repository")]
  node_user_entity["User account<br/>[User.java]"]
  node_verification_repo[("Verification tokens")]
  node_refresh_repo[("Refresh tokens")]
  node_reset_repo[("Reset tokens")]
end

subgraph group_shared["Shared response handling"]
  node_exception_handler["Error responses"]
end

node_client(("Account user"))
node_smtp{{"SMTP server"}}

node_client -->|"requests account actions"| node_auth_service
node_smtp_sender -->|"sends mail"| node_smtp
node_email_service -->|"implemented by"| node_smtp_sender
node_user_details -->|"looks up user"| node_user_repo
node_user_repo -->|"persists"| node_user_entity
node_exception_handler -->|"returns error response"| node_client

click node_auth_service "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/service/AuthService.java"
click node_email_service "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/EmailService.java"
click node_smtp_sender "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/SmtpEmailService.java"
click node_jwt_service "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/JwtService.java"
click node_jwt_filter "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/JwtAuthenticationFilter.java"
click node_security_config "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/config/SecurityConfig.java"
click node_user_details "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/CustomUserDetailsService.java"
click node_user_repo "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/repository/UserRepository.java"
click node_user_entity "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/entity/User.java"
click node_verification_repo "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/VerificationTokenRepository.java"
click node_refresh_repo "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/RefreshTokenRepository.java"
click node_reset_repo "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/PasswordResetTokenRepository.java"
click node_exception_handler "https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/common/exception/GlobalExceptionHandler.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_auth_service,node_email_service,node_smtp_sender,node_client toneBlue
class node_jwt_service,node_jwt_filter,node_security_config,node_user_details toneAmber
class node_user_repo,node_user_entity,node_verification_repo,node_refresh_repo,node_reset_repo,node_smtp toneMint
class node_exception_handler toneRose
```

## Components

### Account workflows

- [Auth operations](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/service/AuthService.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/service/AuthService.java`
- [Email service](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/EmailService.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/EmailService.java`
- [SMTP sender](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/SmtpEmailService.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/email/SmtpEmailService.java`

### Authentication security

- [JWT service](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/JwtService.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/JwtService.java`
- [JWT filter](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/JwtAuthenticationFilter.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/JwtAuthenticationFilter.java`
- [Security config](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/config/SecurityConfig.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/config/SecurityConfig.java`
- [User details loader](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/CustomUserDetailsService.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/security/CustomUserDetailsService.java`

### User and token data

- [User repository](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/repository/UserRepository.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/repository/UserRepository.java`
- [User account](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/entity/User.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/user/entity/User.java`
- [Verification tokens](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/VerificationTokenRepository.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/VerificationTokenRepository.java`
- [Refresh tokens](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/RefreshTokenRepository.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/RefreshTokenRepository.java`
- [Reset tokens](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/PasswordResetTokenRepository.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/auth/repository/PasswordResetTokenRepository.java`

### Shared response handling

- [Error responses](https://github.com/h5misi/sound-cloud-using-spring-boot/blob/main/src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/common/exception/GlobalExceptionHandler.java): `src/main/java/com/soundcloud/SoundCloudUsingSpringBoot/common/exception/GlobalExceptionHandler.java`

### Other components

- **Account user**
- **SMTP server**

## Connections

- Account user → Auth operations: requests account actions
- SMTP sender → SMTP server: sends mail
- Email service → SMTP sender: implemented by
- User details loader → User repository: looks up user
- User repository → User account: persists
- Error responses → Account user: returns error response
