Skip to content

kwhorne/elyra-framework

Repository files navigation

Elyra Framework

CI License: MIT

A Rust + Svelte 5 framework for hyper-responsive desktop apps. Laravel's ergonomics — container, providers, middleware, a typed bridge — but compiled, binary, and without runtime overhead.

The CLI is Ratatosk (rata): the squirrel that runs messages up and down Yggdrasil, between the Rust root and the Svelte crown.

📚 Documentation: elyracode.com/framework (source in docs/). This page is just a landing page.

Highlights

Layout

elyra-framework/
├── framework/   # elyra          — App, Container/Ctx, Command, events, shell (tao+wry)
├── macros/      # elyra-macros   — #[command] and #[derive(Model)]
├── database/    # elyra-db       — Database, migrations, models (GUI-free)
├── ratatosk/    # ratatosk       — the `rata` CLI
├── runtime/     # @elyra/runtime — invoke(), channel(), generated api.*
└── example/     # elyra-example  — the demo app / DX benchmark

Quick start

rata new myapp                 # scaffold (see docs/getting-started.md)
cd myapp
(cd app && npm install && npm run build)
rata codegen                   # generate typed bindings
cargo run                      # launch

Or run the bundled demo from this repo — no npm needed (serves a built-in fallback page):

cargo run -p elyra-example

A command, end to end

use elyra::{command, commands, App, Ctx};

#[command]
async fn greet(_ctx: Ctx, name: String) -> String {
    format!("Hello, {name}!")
}

fn main() -> elyra::Result<()> {
    App::new()
        .commands(commands![greet])
        .assets(elyra::asset_resolver::<Assets>())
        .run()
}
import { api } from "./bindings";              // generated by `rata codegen`
const greeting = await api.greet("World");     // (name: string) => Promise<string>

Cargo features (elyra crate)

Feature Enables
database Database, #[derive(Model)], migrations, App::database
tray App::tray, the system tray
updater the updater module (ed25519)
system native dialogs, shell-open, clipboard, notifications, paths
shortcuts OS-level global keyboard shortcuts
elyra = { version = "0.3", features = ["database", "tray", "updater", "system", "shortcuts"] }

Status

v0.3.0 — a big step toward an Electron alternative. On top of the core (commands, events, DB/models, codegen, About + auto-update), 0.3 adds native system integration (dialogs, shell-open, clipboard, notifications, paths), UI components (dialogs, toasts, ⌘K command palette, context menu), window control + file drop + state persistence, global shortcuts, a native app menu, a settings store, autostart, and sidecar processes. See the changelog and the roadmap.

Each milestone is compiled, clippy-clean, and tested (SQLite for the DB layer; GUI/OS integrations are launch-smoked, with visual / side-effecting steps called out as unverified).

Learn more

Full documentation lives at elyracode.com/framework. Start with getting started and the architecture overview, then dive into any topic from the documentation index.

License

Licensed under the MIT License.

See CONTRIBUTING.md and the Code of Conduct to get involved.

About

Elyra Framework — a Rust + Svelte 5 framework for fast, compiled, binary desktop apps. Laravel-like ergonomics: container, providers, middleware, and a typed MessagePack IPC bridge.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors