Auric is a Rust framework inspired by Ember.js, designed for building single page applications that compile to WebAssembly. The project targets ambitious Rust developers who want fully typed and fully asynchronous application development.
The framework rests on Handlebars templates and JSON:API conventions. Developers construct applications using templates and controllers, achieving superior Model-View-Controller maintainability. The Auric build process then combines routes, templates, and controllers into Leptos components, automatically providing the necessary signals, parameter passing, and async await patterns.
Auric re-imagines the Ember Data framework entirely in type-safe Rust. Applications use a Store to access models, while JSON:API based relational middleware handles backend interaction. This design ensures type safety throughout the data layer, from the Store to the backend connection.
The framework supports popular Ember addons including ember-bootstrap, ember-power-select, ember-concurrency, and ember-truth-helpers. These integrations become available in templates immediately, requiring no additional installation steps. Developers can leverage existing Ember ecosystem components within a Rust-based framework.
Typed and async foundations
Auric distinguishes itself by being fully typed from top to bottom. The framework's type system catches mismatches between templates, controllers, and routes at compile time rather than runtime. Full async support means asynchronous operations flow naturally through the application, with the build system handling promises and await patterns under the hood.
The Handlebars integration means templates use familiar syntax while benefiting from Rust's type checker. JSON:API integration provides a conventions-over-configuration approach to backend communication, reducing boilerplate while maintaining clarity about data relationships.
Ember addon compatibility
A key advantage of Auric is its compatibility with the Ember addon ecosystem. Popular components like ember-bootstrap for UI elements, ember-power-select for enhanced selection interfaces, ember-concurrency for managing asynchronous operations, and ember-truth-helpers for template utilities all work without modification. This compatibility means developers can adopt Auric incrementally, using existing expertise and assets from the Ember world.
The framework doesn't just rebrand these addons; it integrates them so they function naturally within the Rust and WASM context. Templates reference these components as they would in a JavaScript Ember application, but the underlying implementation runs compiled Rust code.
Implications for Rust developers
For teams already working in Rust, Auric provides a path to SPA development without leaving the language. The Handlebars and JSON:API foundations mean the learning curve focuses on the framework's conventions rather than learning an entirely new language or toolchain. The compilation to WASM means applications run at near-native speed in browsers.
The type-safe reimagining of Ember Data addresses a common pain point: keeping frontend types synchronized with backend APIs. By handling this in Rust, Auric eliminates entire categories of runtime errors. The JSON:API middleware generates the necessary serialization and deserialization code, so developers specify what data they need rather than how to fetch it.
Ember addon compatibility opens the framework to teams with existing Ember knowledge. Developers familiar with ember-bootstrap or ember-concurrency can apply that knowledge directly, reducing the ramp-up time for new projects.
The fully async nature of the framework means applications remain responsive even under heavy data loading conditions. The build system handles the complexity of composing asynchronous operations, so application code reads sequentially.
Auric represents an approach where the productivity tools and conventions of the Ember ecosystem meet the performance and safety guarantees of Rust and WASM. For ambitious Rust developers building single page applications, it provides a typed, async, and addon-compatible foundation.