RF RustFrame Repo-driven desktop site

Rust / Tao / Wry

Frontend-first desktop apps without the usual framework pileup.

RustFrame keeps the app folder plain, injects the bridge from the runtime, drives the app from typed rustframe.json, and only turns on SQLite, filesystem, or shell access when the manifest and trust model explicitly allow it.

Runtime `tao` + `wry` + multi-window shell
Transport Runtime-injected native bridge
Storage SQLite + versioned SQL migrations
Support Matrix Linux, Windows, macOS host-native packaging

Workspace

What actually lives in this repo

Runtime crate

`crates/rustframe`

Owns the desktop shell, injected bridge, multi-window IPC dispatch, SQLite migrations, filesystem scope, trust model, and hardened shell execution.

CLI crate

`crates/rustframe-cli`

Scaffolds apps, parses typed rustframe.json, generates or ejects runners, validates targets, and packages host-native bundles.

Capability demo

`examples/capability-demo`

Shows window controls, scoped file reads, and hardened process execution without a localhost bridge or preload server.

App catalog

`apps/*`

Ships multiple frontend-first desktop examples ranging from note-taking and task planning to CRM, inventory, and editorial workflows.

Workflow

Keep the app folder plain. Let the runner stay hidden.

01

Generate an app folder

RustFrame writes index.html, styles.css, app.js, rustframe.json, and an optional data/ directory into apps/<name>/ while the runtime injects the native bridge.

02

Declare config and boundaries in the manifest

Typed window settings, trust model, capability roots, shell rules, and packaging metadata all live in rustframe.json instead of loose string metadata.

03

Run through a generated or ejected runner

dev, export, platform-check, and package use the hidden runner by default, while eject gives advanced apps an owned native entrypoint.

04

Verify and ship on the native host

platform-check validates host toolchain expectations, package builds native bundles, and end-to-end smoke coverage keeps the new/exported runtime path honest.

Runtime Contract

Small native surface, explicit security and packaging boundaries

Window

Primary and secondary windows share one runtime

The runtime can open route-scoped secondary windows while keeping one native event loop and one bridge contract.

Security

Pick a trust model up front

local-first and networked modes expose different bridge surfaces, so native power stays aligned with the frontend trust boundary.

Database

Schema, seeds, and SQL migrations ship together

When data/schema.json exists, RustFrame provisions SQLite, runs versioned data/migrations/*.sql, and keeps additive schema reconciliation in place.

Filesystem

Read access is manifest-scoped

fs.readText(...) only succeeds inside explicitly allowed roots and rejects parent escapes or outside paths.

Shell

Execution is allowlisted and hardened

shell.exec(...) only runs declared commands, with explicit arg rules, cwd and env policy, timeouts, and output caps.

Distribution

Validate targets before packaging

platform-check surfaces native host constraints early, and package produces Linux, Windows, or macOS host-native bundles.

Docs

Move from the landing page into the actual contract