How dqsjqian/aria works
Aria is a cross-platform C++23 MVVM framework: application logic lives in toolkit-independent ViewModels, reactive properties derive and publish state, and BindingEngine connects that state to native views through platform adapters. The principal workflow is ViewModel state → reactive computation → binding → platform view; two-way bindings and the HTTP adapter also carry user edits back. The README documents async commands/coroutines, observable and derived lists, validation, forms, navigation, and runtime facilities. Several of those paths are represented by their public headers; wiring beyond the sampled implementation is not inferred.
Main entry points: view_adapter.hpp View Adapter Contract · property.hpp Property / Computed · view_model.hpp ViewModel · http_adapter.cpp HTTP Adapter
Components 20
Reactive Core
- Property / Computed
modules/core/include/aria/property.hpp - Dependency Graph
modules/core/include/aria/reactive/graph.hpp - Observable Lists
modules/core/include/aria/observable_list.hpp - Derived Lists
modules/core/include/aria/derived/sorted_list.hpp
Application Models
- ViewModel
modules/binding/include/aria/binding/view_model.hpp - Commands & Validation
modules/core/include/aria/validator.hpp - Forms & Navigation
modules/binding/include/aria/binding/form.hpp
Binding Layer
- BindingEngine
modules/binding/include/aria/binding/binding_engine.hpp - View Adapter Contract
modules/binding/include/aria/binding/view_adapter.hpp
Platform Adapters
- Qt6 Adapter
modules/adapters/qt6/src/qt_adapter.cpp - AppKit Adapter
modules/adapters/appkit/include/aria/adapters/appkit/AppKitAdapter.hpp - UIKit Adapter
modules/adapters/uikit/include/aria/adapters/uikit/UIKitAdapter.hpp - JNI Adapter
modules/adapters/jni/src/JniAdapter.cpp - HTTP Adapter
modules/adapters/http/src/http_adapter.cpp - Browser SDK
modules/adapters/http/web-sdk/aria_client.js
Async Runtime
- Async Commands
modules/async/include/aria/async/async_command.hpp - Dispatcher
modules/runtime/src/dispatcher.cpp - Shared Signals
modules/abi/include/aria/abi/signal.hpp
Other components
- Application Developer
- End User
Connections 28
- Application Developer → ViewModel: defines
- End User → Qt6 Adapter: uses view
- End User → AppKit Adapter: uses view
- End User → UIKit Adapter: uses view
- End User → JNI Adapter: uses view
- ViewModel → Property / Computed: owns state
- Property / Computed → Dependency Graph: tracks dependencies
- Property / Computed → BindingEngine: notifies changes
- BindingEngine → View Adapter Contract: calls
- View Adapter Contract → Qt6 Adapter: implemented by
- View Adapter Contract → AppKit Adapter: implemented by
- View Adapter Contract → UIKit Adapter: implemented by
- View Adapter Contract → JNI Adapter: implemented by
- View Adapter Contract → HTTP Adapter: implemented by
- Qt6 Adapter → End User: updates view
- AppKit Adapter → End User: updates view
- UIKit Adapter → End User: updates view
- JNI Adapter → End User: updates view
- End User → HTTP Adapter: sends edits
- HTTP Adapter → Browser SDK: SSE state
- Browser SDK → HTTP Adapter: REST edits
- Observable Lists → Derived Lists: supplies changes
- ViewModel → Commands & Validation: uses
- ViewModel → Forms & Navigation: uses
- Commands & Validation → Async Commands: runs asynchronously
- Async Commands → Dispatcher: schedules work
- BindingEngine → Dispatcher: marshals callbacks
- Property / Computed → Shared Signals: publishes signals