# rephaeltas/winterfx architecture

> Architecture diagram of the GitHub repository rephaeltas/winterfx, 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/rephaeltas/winterfx
- Repository: https://github.com/rephaeltas/winterfx

## Overview

WinterFX is an annotation-driven JavaFX desktop framework. An application starts through WinterApplication, discovers annotated beans and resources, and uses dependency injection to assemble controllers and services. The view workflow resolves a registered view, loads its FXML and controller, binds reactive state and buttons, then caches and displays the result. Separate capabilities include in-memory internal routing, image management, notifications, event dispatch, and method-interception pipelines. Connections for loading, scanning, caching, image access, and interception are supported by sampled source; some broader framework capabilities are documented but their wiring was not sampled.

Main entry points: [`src/main/java/com/ossobo/winterfx/view/StageManager.java`](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/StageManager.java) (Stage Manager), [`src/main/java/com/ossobo/winterfx/bootstrap/WinterApplication.java`](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/bootstrap/WinterApplication.java) (Application Startup), [`src/main/java/com/ossobo/winterfx/scanner/ScannerEngine.java`](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/scanner/ScannerEngine.java) (Scanner Engine), [`src/main/java/com/ossobo/winterfx/view/loader/FXMLService.java`](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/loader/FXMLService.java) (FXML Loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_startup["Startup And DI"]
  node_app["Application Startup"]
  node_scanner["Scanner Engine<br/>[ScannerEngine.java]"]
  node_bean_scan["Bean Discovery"]
  node_resource_scan["Resource Discovery"]
  node_di["DI Container<br/>[DiContainer.java]"]
end

subgraph group_views["Views And Resources"]
  node_resource_module["Resource Module"]
  node_stage["Stage Manager<br/>[StageManager.java]"]
  node_fxml["FXML Loader<br/>[FXMLService.java]"]
  node_reactive["Reactive View State"]
  node_bind["Button Binding"]
  node_view_cache[("View Cache<br/>[CacheManager.java]")]
end

subgraph group_routing["Routing And Events"]
  node_routes["Route API<br/>[Rotas.java]"]
  node_dispatcher["API Dispatcher<br/>[ApiDispatcher.java]"]
  node_events["Event Bus<br/>[EventBus.java]"]
end

subgraph group_ui["UI Services"]
  node_images["Image Manager<br/>[ImageManager.java]"]
  node_image_cache[("Image Cache<br/>[ImageCache.java]")]
  node_notifications["Notifications"]
  node_alerts["Alert Manager<br/>[AlertManager.java]"]
end

subgraph group_interception["Interception"]
  node_proxy["Controller Proxy"]
  node_pipeline["Pipeline Executor"]
  node_handlers["Handler Registry"]
end

node_developer(("Application Developer"))
node_javafx(("JavaFX Runtime"))

node_developer -->|"starts app"| node_app
node_app -->|"scans packages"| node_scanner
node_scanner -->|"discovers beans"| node_bean_scan
node_scanner -->|"discovers resources"| node_resource_scan
node_bean_scan -->|"registers beans"| node_di
node_resource_scan -->|"registers resources"| node_resource_module
node_app -->|"initializes container"| node_di
node_javafx -->|"provides stage"| node_stage
node_stage -->|"resolves view"| node_resource_module
node_stage -->|"loads view"| node_fxml
node_fxml -->|"gets controller"| node_di
node_fxml -->|"injects view state"| node_reactive
node_stage -->|"reads and writes"| node_view_cache
node_stage -->|"rebinds buttons"| node_bind
node_routes -->|"dispatches routes"| node_dispatcher
node_images -->|"resolves image"| node_resource_module
node_images -->|"reads and writes"| node_image_cache
node_notifications -->|"shows alerts"| node_alerts
node_proxy -->|"delegates calls"| node_pipeline
node_pipeline -->|"runs phases"| node_handlers

click node_app "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/bootstrap/WinterApplication.java"
click node_scanner "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/scanner/ScannerEngine.java"
click node_bean_scan "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/scanner/BeanAnnotationScanner.java"
click node_resource_scan "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/scanner/ResourceAnnotationScanner.java"
click node_di "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/di/DiContainer.java"
click node_resource_module "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/resources/ResourceModule.java"
click node_stage "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/StageManager.java"
click node_fxml "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/loader/FXMLService.java"
click node_reactive "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/injection/ReactiveViewInjector.java"
click node_bind "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/loader/RebindButtonsService.java"
click node_view_cache "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/cache/CacheManager.java"
click node_routes "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/router/Rotas.java"
click node_dispatcher "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/router/processor/ApiDispatcher.java"
click node_events "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/event/EventBus.java"
click node_images "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/imagemanager/ImageManager.java"
click node_image_cache "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/imagemanager/image/ImageCache.java"
click node_notifications "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/notifications/NotificationManager.java"
click node_alerts "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/alert/AlertManager.java"
click node_proxy "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/intercept/ControllerProxyFactory.java"
click node_pipeline "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/runtime/pipeline/PipelineExecutor.java"
click node_handlers "https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/runtime/HandlerRegistry.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_app,node_scanner,node_bean_scan,node_resource_scan,node_di toneBlue
class node_resource_module,node_stage,node_fxml,node_reactive,node_bind,node_view_cache toneAmber
class node_routes,node_dispatcher,node_events toneMint
class node_images,node_image_cache,node_notifications,node_alerts toneRose
class node_proxy,node_pipeline,node_handlers,node_developer,node_javafx toneIndigo
```

## Components

### Startup And DI

- [Application Startup](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/bootstrap/WinterApplication.java): `src/main/java/com/ossobo/winterfx/bootstrap/WinterApplication.java`
- [Scanner Engine](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/scanner/ScannerEngine.java): `src/main/java/com/ossobo/winterfx/scanner/ScannerEngine.java`
- [Bean Discovery](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/scanner/BeanAnnotationScanner.java): `src/main/java/com/ossobo/winterfx/scanner/BeanAnnotationScanner.java`
- [Resource Discovery](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/scanner/ResourceAnnotationScanner.java): `src/main/java/com/ossobo/winterfx/scanner/ResourceAnnotationScanner.java`
- [DI Container](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/di/DiContainer.java): `src/main/java/com/ossobo/winterfx/di/DiContainer.java`

### Views And Resources

- [Resource Module](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/resources/ResourceModule.java): `src/main/java/com/ossobo/winterfx/resources/ResourceModule.java`
- [Stage Manager](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/StageManager.java): `src/main/java/com/ossobo/winterfx/view/StageManager.java`
- [FXML Loader](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/loader/FXMLService.java): `src/main/java/com/ossobo/winterfx/view/loader/FXMLService.java`
- [Reactive View State](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/injection/ReactiveViewInjector.java): `src/main/java/com/ossobo/winterfx/view/injection/ReactiveViewInjector.java`
- [Button Binding](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/loader/RebindButtonsService.java): `src/main/java/com/ossobo/winterfx/view/loader/RebindButtonsService.java`
- [View Cache](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/cache/CacheManager.java): `src/main/java/com/ossobo/winterfx/cache/CacheManager.java`

### Routing And Events

- [Route API](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/router/Rotas.java): `src/main/java/com/ossobo/winterfx/router/Rotas.java`
- [API Dispatcher](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/router/processor/ApiDispatcher.java): `src/main/java/com/ossobo/winterfx/router/processor/ApiDispatcher.java`
- [Event Bus](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/event/EventBus.java): `src/main/java/com/ossobo/winterfx/event/EventBus.java`

### UI Services

- [Image Manager](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/imagemanager/ImageManager.java): `src/main/java/com/ossobo/winterfx/imagemanager/ImageManager.java`
- [Image Cache](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/imagemanager/image/ImageCache.java): `src/main/java/com/ossobo/winterfx/imagemanager/image/ImageCache.java`
- [Notifications](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/notifications/NotificationManager.java): `src/main/java/com/ossobo/winterfx/notifications/NotificationManager.java`
- [Alert Manager](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/view/alert/AlertManager.java): `src/main/java/com/ossobo/winterfx/view/alert/AlertManager.java`

### Interception

- [Controller Proxy](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/intercept/ControllerProxyFactory.java): `src/main/java/com/ossobo/winterfx/intercept/ControllerProxyFactory.java`
- [Pipeline Executor](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/runtime/pipeline/PipelineExecutor.java): `src/main/java/com/ossobo/winterfx/runtime/pipeline/PipelineExecutor.java`
- [Handler Registry](https://github.com/rephaeltas/winterfx/blob/main/src/main/java/com/ossobo/winterfx/runtime/HandlerRegistry.java): `src/main/java/com/ossobo/winterfx/runtime/HandlerRegistry.java`

### Other components

- **Application Developer**
- **JavaFX Runtime**

## Connections

- Application Developer → Application Startup: starts app
- Application Startup → Scanner Engine: scans packages
- Scanner Engine → Bean Discovery: discovers beans
- Scanner Engine → Resource Discovery: discovers resources
- Bean Discovery → DI Container: registers beans
- Resource Discovery → Resource Module: registers resources
- Application Startup → DI Container: initializes container
- JavaFX Runtime → Stage Manager: provides stage
- Stage Manager → Resource Module: resolves view
- Stage Manager → FXML Loader: loads view
- FXML Loader → DI Container: gets controller
- FXML Loader → Reactive View State: injects view state
- Stage Manager → View Cache: reads and writes
- Stage Manager → Button Binding: rebinds buttons
- Route API → API Dispatcher: dispatches routes
- Image Manager → Resource Module: resolves image
- Image Manager → Image Cache: reads and writes
- Notifications → Alert Manager: shows alerts
- Controller Proxy → Pipeline Executor: delegates calls
- Pipeline Executor → Handler Registry: runs phases
