# ridhorambu93/spring-boot-modu-mono architecture

> Architecture diagram of the GitHub repository ridhorambu93/spring-boot-modu-mono, 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/ridhorambu93/spring-boot-modu-mono
- Repository: https://github.com/ridhorambu93/spring-boot-modu-mono

## Overview

This is a Spring Boot modular-monolith API for authentication, user profiles, banking customers, and province/city master data. The main workflow is an HTTP request reaching a controller, which delegates to a domain service and returns an API response; authentication additionally issues or refreshes JWTs. The README documents PostgreSQL persistence and the broader endpoint capabilities. Several service implementations and security components are present in the tree but were not sampled, so uncertain internal calls are omitted.

Main entry points: [`src/main/java/com/boilerplate/infrastructure/security/SecurityConfig.java`](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/SecurityConfig.java) (Security configuration), [`src/main/java/com/boilerplate/module/user/controller/AuthController.java`](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/controller/AuthController.java) (Auth endpoints), [`src/main/java/com/boilerplate/module/user/service/AuthService.java`](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/AuthService.java) (Authentication service), [`src/main/java/com/boilerplate/infrastructure/security/JwtAuthFilter.java`](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/JwtAuthFilter.java) (JWT authentication filter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_identity["Identity and security"]
  node_auth_controller["Auth endpoints"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_auth_impl["Auth implementation"]
  node_refresh_service["Refresh-token service"]
  node_jwt_filter["JWT authentication filter<br/>[JwtAuthFilter.java]"]
  node_jwt_service["JWT service<br/>[JwtService.java]"]
  node_rate_filter["Rate-limit filter"]
  node_security_config["Security configuration"]
end

subgraph group_users["User accounts"]
  node_user_controller["User endpoints"]
  node_user_service["User service<br/>[UserService.java]"]
  node_user_impl["User implementation"]
end

subgraph group_customers["Banking customers"]
  node_customer_controller["Customer endpoints"]
  node_customer_service["Customer service"]
  node_customer_impl["Customer implementation"]
end

subgraph group_masterdata["Location master data"]
  node_province_controller["Province endpoints"]
  node_province_service["Province service"]
  node_province_impl["Province implementation"]
  node_city_controller["City endpoints"]
  node_city_service["City service<br/>[CityService.java]"]
  node_city_impl["City implementation"]
end

node_client(("API client"))

node_client -->|"sends auth requests"| node_auth_controller
node_auth_controller -->|"delegates auth"| node_auth_service
node_auth_service -->|"implemented by"| node_auth_impl
node_client -->|"requests profile"| node_user_controller
node_user_controller -->|"delegates lookup"| node_user_service
node_user_service -->|"implemented by"| node_user_impl
node_client -->|"manages customers"| node_customer_controller
node_customer_controller -->|"delegates operations"| node_customer_service
node_customer_service -->|"implemented by"| node_customer_impl
node_client -->|"manages provinces"| node_province_controller
node_province_controller -->|"delegates operations"| node_province_service
node_province_service -->|"implemented by"| node_province_impl
node_client -->|"manages cities"| node_city_controller
node_city_controller -->|"delegates operations"| node_city_service
node_city_service -->|"implemented by"| node_city_impl
node_jwt_filter -->|"validates tokens"| node_jwt_service
node_security_config -->|"configures security"| node_jwt_filter
node_security_config -->|"configures security"| node_rate_filter

click node_auth_controller "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/controller/AuthController.java"
click node_auth_service "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/AuthService.java"
click node_auth_impl "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/AuthServiceImpl.java"
click node_refresh_service "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/RefreshTokenService.java"
click node_jwt_filter "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/JwtAuthFilter.java"
click node_jwt_service "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/JwtService.java"
click node_rate_filter "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/RateLimitFilter.java"
click node_security_config "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/SecurityConfig.java"
click node_user_controller "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/controller/UserController.java"
click node_user_service "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/UserService.java"
click node_user_impl "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/UserServiceImpl.java"
click node_customer_controller "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/customer/controller/BankingUserController.java"
click node_customer_service "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/customer/service/BankingUserService.java"
click node_customer_impl "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/customer/service/BankingUserServiceImpl.java"
click node_province_controller "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/controller/ProvinceController.java"
click node_province_service "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/ProvinceService.java"
click node_province_impl "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/ProvinceServiceImpl.java"
click node_city_controller "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/controller/CityController.java"
click node_city_service "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/CityService.java"
click node_city_impl "https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/CityServiceImpl.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_controller,node_auth_service,node_auth_impl,node_refresh_service,node_jwt_filter,node_jwt_service,node_rate_filter,node_security_config,node_client toneBlue
class node_user_controller,node_user_service,node_user_impl toneAmber
class node_customer_controller,node_customer_service,node_customer_impl toneMint
class node_province_controller,node_province_service,node_province_impl,node_city_controller,node_city_service,node_city_impl toneRose
```

## Components

### Identity and security

- [Auth endpoints](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/controller/AuthController.java): `src/main/java/com/boilerplate/module/user/controller/AuthController.java`
- [Authentication service](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/AuthService.java): `src/main/java/com/boilerplate/module/user/service/AuthService.java`
- [Auth implementation](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/AuthServiceImpl.java): `src/main/java/com/boilerplate/module/user/service/AuthServiceImpl.java`
- [Refresh-token service](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/RefreshTokenService.java): `src/main/java/com/boilerplate/module/user/service/RefreshTokenService.java`
- [JWT authentication filter](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/JwtAuthFilter.java): `src/main/java/com/boilerplate/infrastructure/security/JwtAuthFilter.java`
- [JWT service](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/JwtService.java): `src/main/java/com/boilerplate/infrastructure/security/JwtService.java`
- [Rate-limit filter](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/RateLimitFilter.java): `src/main/java/com/boilerplate/infrastructure/security/RateLimitFilter.java`
- [Security configuration](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/infrastructure/security/SecurityConfig.java): `src/main/java/com/boilerplate/infrastructure/security/SecurityConfig.java`

### User accounts

- [User endpoints](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/controller/UserController.java): `src/main/java/com/boilerplate/module/user/controller/UserController.java`
- [User service](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/UserService.java): `src/main/java/com/boilerplate/module/user/service/UserService.java`
- [User implementation](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/user/service/UserServiceImpl.java): `src/main/java/com/boilerplate/module/user/service/UserServiceImpl.java`

### Banking customers

- [Customer endpoints](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/customer/controller/BankingUserController.java): `src/main/java/com/boilerplate/module/customer/controller/BankingUserController.java`
- [Customer service](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/customer/service/BankingUserService.java): `src/main/java/com/boilerplate/module/customer/service/BankingUserService.java`
- [Customer implementation](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/customer/service/BankingUserServiceImpl.java): `src/main/java/com/boilerplate/module/customer/service/BankingUserServiceImpl.java`

### Location master data

- [Province endpoints](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/controller/ProvinceController.java): `src/main/java/com/boilerplate/module/masterdata/controller/ProvinceController.java`
- [Province service](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/ProvinceService.java): `src/main/java/com/boilerplate/module/masterdata/service/ProvinceService.java`
- [Province implementation](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/ProvinceServiceImpl.java): `src/main/java/com/boilerplate/module/masterdata/service/ProvinceServiceImpl.java`
- [City endpoints](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/controller/CityController.java): `src/main/java/com/boilerplate/module/masterdata/controller/CityController.java`
- [City service](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/CityService.java): `src/main/java/com/boilerplate/module/masterdata/service/CityService.java`
- [City implementation](https://github.com/ridhorambu93/spring-boot-modu-mono/blob/main/src/main/java/com/boilerplate/module/masterdata/service/CityServiceImpl.java): `src/main/java/com/boilerplate/module/masterdata/service/CityServiceImpl.java`

### Other components

- **API client**

## Connections

- API client → Auth endpoints: sends auth requests
- Auth endpoints → Authentication service: delegates auth
- Authentication service → Auth implementation: implemented by
- API client → User endpoints: requests profile
- User endpoints → User service: delegates lookup
- User service → User implementation: implemented by
- API client → Customer endpoints: manages customers
- Customer endpoints → Customer service: delegates operations
- Customer service → Customer implementation: implemented by
- API client → Province endpoints: manages provinces
- Province endpoints → Province service: delegates operations
- Province service → Province implementation: implemented by
- API client → City endpoints: manages cities
- City endpoints → City service: delegates operations
- City service → City implementation: implemented by
- JWT authentication filter → JWT service: validates tokens
- Security configuration → JWT authentication filter: configures security
- Security configuration → Rate-limit filter: configures security
