# aayushsirsat02/sample-generator architecture

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

- Interactive diagram: https://gitdiagram.com/aayushsirsat02/sample-generator
- Repository: https://github.com/aayushsirsat02/sample-generator

## Overview

#### Purpose and entry point
This is a Maven-packaged Java report-management application. The runtime entry point is `src/main/java/com/sample_generator/sample/SampleApplication.java`; the built executable is `target/sample-0.0.1-SNAPSHOT.jar`. It serves a login/dashboard UI and controller-driven operations for sample reports, assets, users, companies, and market segments.

#### Web and presentation boundary
HTTP requests enter controller classes under `src/main/java/com/sample_generator/sample/controller/`, notably `SampleReportController.java`, `AssetController.java`, and `LoginController.java`. Server-rendered pages reside in `src/main/resources/templates/dashboard.html` and `src/main/resources/templates/login.html`; browser behavior and styling are delivered from `src/main/resources/static/js/dashboard.js` and `src/main/resources/static/css/dashboard.css`.

#### Report workflow
`SampleReportController.java` accepts report-facing requests and delegates business operations to `SampleReportService.java` / `SampleReportServiceImpl.java`. Request and response boundaries are explicit in DTOs such as `CreateSampleReportRequest.java`, `SampleReportDetailResponse.java`, and `SampleReportListResponse.java`. Report configuration/reference concerns are separated into `ReportConfigService.java` and `AssetReferenceService.java`.

#### Domain and persistence
The core domain is modeled through JPA-style entities: `SampleReport.java`, `Asset.java`, `Company.java`, `MarketSegment.java`, `User.java`, and `Role.java`. Repository interfaces form the persistence boundary, including `SampleReportRepository.java`, `AssetRepository.java`, and `UserRepository.java`. A local MVStore database artifact is present at `data/sample_report_db.mv.db`, indicating file-backed H2-compatible development/runtime storage.

#### Authentication and administration
Security policy is centralized in `src/main/java/com/sample_generator/sample/config/SecurityConfig.java`. User lookup for authentication is handled by `src/main/java/com/sample_generator/sample/security/CustomUserDetailsService.java`; login routing/UI is in `LoginController.java` and the login templates. Administrative user operations are exposed separately through `AdminUserController.java`, preserving a distinct admin control boundary.

#### Initialization and failure handling
`src/main/java/com/sample_generator/sample/config/DataInitializer.java` seeds or prepares application data at startup. `src/main/java/com/sample_generator/sample/controller/GlobalExceptionHandler.java` provides a cross-controller error boundary so service, validation, and persistence failures can be converted into consistent HTTP responses.

#### Runtime and deployment artifacts
The project uses Maven wrapper launch/build infrastructure (`mvnw`, `.mvn/wrapper/maven-wrapper.properties`) and application configuration in `src/main/resources/application.properties`. Windows-oriented execution scripts (`run_jar.cmd`, `run_mvnw.cmd`) support launching either the packaged JAR or Maven runtime. External-service evidence is limited; the repository primarily contains a self-contained web application with local database state and static assets.

Main entry points: [`src/main/java/com/sample_generator/sample/repository/SampleReportRepository.java`](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/repository/SampleReportRepository.java) (JPA repositories), [`src/main/java/com/sample_generator/sample/SampleApplication.java`](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/SampleApplication.java) (SampleApplication), [`src/main/java/com/sample_generator/sample/controller/SampleReportController.java`](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/SampleReportController.java) (SampleReportController), [`src/main/java/com/sample_generator/sample/config/SecurityConfig.java`](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/config/SecurityConfig.java) (SecurityConfig)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web UI"]
  node_controllers["Business controllers<br/>HTTP controllers"]
  node_report_controller["SampleReportController<br/>report controller"]
  node_login_controller["LoginController<br/>login controller"]
  node_pages["Dashboard &amp; login pages<br/>server templates<br/>[dashboard.html]"]
  node_browser_assets["Dashboard assets<br/>JavaScript and CSS<br/>[dashboard.js]"]
end

subgraph group_app["Application"]
  node_runtime{{"SampleApplication<br/>Java entry point"}}
  node_report_service["Report service<br/>business service"]
  node_report_contracts["Report DTOs<br/>request/response DTOs"]
  node_reference_services["Report reference services<br/>configuration services"]
  node_exception_handler["GlobalExceptionHandler<br/>error boundary"]
  node_initializer["DataInitializer<br/>startup initialization"]
  node_packaged_jar["Packaged JAR<br/>Maven artifact"]
end

subgraph group_data["Domain &amp; Data"]
  node_entities["Report domain entities<br/>JPA entities"]
  node_repositories[("JPA repositories<br/>persistence interfaces")]
  node_local_db[("Local MVStore database<br/>H2-compatible storage")]
end

subgraph group_security["Security &amp; Admin"]
  node_security_config["SecurityConfig<br/>security policy"]
  node_user_details["CustomUserDetailsService<br/>authentication lookup"]
  node_admin_controller["AdminUserController<br/>admin controller"]
end

node_packaged_jar -->|"launches"| node_runtime
node_runtime -->|"serves"| node_controllers
node_runtime -->|"applies"| node_security_config
node_runtime -->|"runs at startup"| node_initializer
node_controllers -->|"includes"| node_report_controller
node_controllers -->|"renders"| node_pages
node_pages -->|"uses"| node_browser_assets
node_report_controller -->|"binds"| node_report_contracts
node_report_controller -->|"delegates to"| node_report_service
node_report_service -->|"uses"| node_reference_services
node_report_service -->|"persists through"| node_repositories
node_repositories -->|"maps"| node_entities
node_repositories -->|"stores in"| node_local_db
node_security_config -->|"protects login flow"| node_login_controller
node_security_config -->|"authenticates via"| node_user_details
node_user_details -->|"loads users from"| node_repositories
node_admin_controller -->|"manages users through"| node_repositories
node_controllers -.->|"failures handled by"| node_exception_handler
node_initializer -->|"prepares data through"| node_repositories

click node_runtime "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/SampleApplication.java"
click node_report_controller "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/SampleReportController.java"
click node_login_controller "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/LoginController.java"
click node_pages "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/resources/templates/dashboard.html"
click node_browser_assets "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/resources/static/js/dashboard.js"
click node_report_contracts "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/dto/CreateSampleReportRequest.java"
click node_reference_services "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/service/ReportConfigService.java"
click node_exception_handler "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/GlobalExceptionHandler.java"
click node_repositories "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/repository/SampleReportRepository.java"
click node_local_db "https://github.com/aayushsirsat02/sample-generator/blob/main/data/sample_report_db.mv.db"
click node_security_config "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/config/SecurityConfig.java"
click node_user_details "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/security/CustomUserDetailsService.java"
click node_admin_controller "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/AdminUserController.java"
click node_initializer "https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/config/DataInitializer.java"
click node_packaged_jar "https://github.com/aayushsirsat02/sample-generator/blob/main/target/sample-0.0.1-SNAPSHOT.jar"

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_controllers,node_report_controller,node_login_controller,node_pages,node_browser_assets toneBlue
class node_runtime,node_report_service,node_report_contracts,node_reference_services,node_exception_handler,node_initializer,node_packaged_jar toneAmber
class node_entities,node_repositories,node_local_db toneMint
class node_security_config,node_user_details,node_admin_controller toneRose
```

## Components

### Web UI

- **Business controllers**: HTTP controllers · Report and asset request endpoints.
- [SampleReportController](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/SampleReportController.java): report controller · `src/main/java/com/sample_generator/sample/controller/SampleReportController.java`
- [LoginController](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/LoginController.java): login controller · `src/main/java/com/sample_generator/sample/controller/LoginController.java`
- [Dashboard & login pages](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/resources/templates/dashboard.html): server templates · `src/main/resources/templates/dashboard.html`
- [Dashboard assets](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/resources/static/js/dashboard.js): JavaScript and CSS · `src/main/resources/static/js/dashboard.js`

### Application

- [SampleApplication](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/SampleApplication.java): Java entry point · Bootstraps the report-management application. · `src/main/java/com/sample_generator/sample/SampleApplication.java`
- **Report service**: business service · Implements report operations and configuration coordination.
- [Report DTOs](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/dto/CreateSampleReportRequest.java): request/response DTOs · `src/main/java/com/sample_generator/sample/dto/CreateSampleReportRequest.java`
- [Report reference services](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/service/ReportConfigService.java): configuration services · `src/main/java/com/sample_generator/sample/service/ReportConfigService.java`
- [GlobalExceptionHandler](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/GlobalExceptionHandler.java): error boundary · Converts controller-layer failures into consistent HTTP responses. · `src/main/java/com/sample_generator/sample/controller/GlobalExceptionHandler.java`
- [DataInitializer](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/config/DataInitializer.java): startup initialization · Seeds or prepares application data. · `src/main/java/com/sample_generator/sample/config/DataInitializer.java`
- [Packaged JAR](https://github.com/aayushsirsat02/sample-generator/blob/main/target/sample-0.0.1-SNAPSHOT.jar): Maven artifact · `target/sample-0.0.1-SNAPSHOT.jar`

### Domain & Data

- **Report domain entities**: JPA entities · Reports, assets, companies, market segments, users, and roles.
- [JPA repositories](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/repository/SampleReportRepository.java): persistence interfaces · Persists report, asset, user, and related domain state. · `src/main/java/com/sample_generator/sample/repository/SampleReportRepository.java`
- [Local MVStore database](https://github.com/aayushsirsat02/sample-generator/blob/main/data/sample_report_db.mv.db): H2-compatible storage · File-backed development/runtime database state. · `data/sample_report_db.mv.db`

### Security & Admin

- [SecurityConfig](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/config/SecurityConfig.java): security policy · `src/main/java/com/sample_generator/sample/config/SecurityConfig.java`
- [CustomUserDetailsService](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/security/CustomUserDetailsService.java): authentication lookup · `src/main/java/com/sample_generator/sample/security/CustomUserDetailsService.java`
- [AdminUserController](https://github.com/aayushsirsat02/sample-generator/blob/main/src/main/java/com/sample_generator/sample/controller/AdminUserController.java): admin controller · Separate administrative user-operation boundary. · `src/main/java/com/sample_generator/sample/controller/AdminUserController.java`

## Connections

- Packaged JAR → SampleApplication: launches
- SampleApplication → Business controllers: serves
- SampleApplication → SecurityConfig: applies
- SampleApplication → DataInitializer: runs at startup
- Business controllers → SampleReportController: includes
- Business controllers → Dashboard & login pages: renders
- Dashboard & login pages → Dashboard assets: uses
- SampleReportController → Report DTOs: binds
- SampleReportController → Report service: delegates to
- Report service → Report reference services: uses
- Report service → JPA repositories: persists through
- JPA repositories → Report domain entities: maps
- JPA repositories → Local MVStore database: stores in
- SecurityConfig → LoginController: protects login flow
- SecurityConfig → CustomUserDetailsService: authenticates via
- CustomUserDetailsService → JPA repositories: loads users from
- AdminUserController → JPA repositories: manages users through
- Business controllers → GlobalExceptionHandler: failures handled by
- DataInitializer → JPA repositories: prepares data through
