Skip to content
elcoospPublic

About

One Rust core. Every framework. A full-stack meta-framework with React, Vue, Svelte, and Solid adapters β€” compiles to a single static binary, deploys to 12 targets, with fast paths that skip JavaScript entirely. πŸ¦€βš‘

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

2,341 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Oxide

Oxide

One Rust core. Every framework.

CI License Rust Adapters Tests

Install Β· Features Β· Architecture Β· Adapters Β· CLI Β· Docs Β· Status

Note

A demo GIF lands here on tag day. Until then: cargo build --release -p oxide-fw-cli && ./target/release/oxide doctor.

Oxide is a full-stack meta-framework with a Rust core. React, Vue, Svelte and Solid are first-class adapters over one shared engine that owns routing, data, caching, bundling, serving and deployment β€” so anything framework-neutral behaves identically on all four. It compiles to a single static binary and ships to twelve deploy targets.

Install

Prerequisites: Rust stable (edition 2024) and Node β‰₯ 24.

cargo install oxide-fw-cli       # the CLI β€” one static binary
oxide doctor                     # env check: node, cargo, config, cache, secrets

pnpm create oxide my-app --framework react --template blog
cd my-app
oxide dev                        # dev server with HMR
oxide build                      # production build
oxide start --port 3000          # production server

Note

v0.1.0 is not yet published. Until cargo install oxide-fw-cli resolves on crates.io, build from source β€” see Building from source. Every command above works the same against ./target/release/oxide.

create-oxide is the separate npm scaffolder (npmjs.com/package/create-oxide).

Features

One engine, four frameworks One versioned adapter contract (contract: 1). Real streaming SSR is the default; framework libraries are optional peers.
Fast paths skip JS Redirects, rewrites, headers, auth and rate limits evaluate natively in Rust. oxide.config.ts is statically extracted β€” the config path never runs JavaScript.
One wire format ODF is a devalue-compatible binary format encoded in Rust, decoded by a zero-dependency TS module. Date, Map, Set, BigInt survive a cache round trip.
Three-tier cache L0 in-process, L1 data cache, L2 pluggable remote (Redis, S3, HTTP). Tags, stale-while-revalidate, single-flight, MAC-sealed remote payloads.
One static binary hyper 1.x + rustls: HTTP/1.1, HTTP/2, HTTP/3 over QUIC. Precompressed static serving (zstd β†’ brotli β†’ gzip), range requests, zero-downtime reload via SO_REUSEPORT.
Twelve deploy targets Binary, Node, Static, Docker, Cloudflare (Workers + Pages), Lambda, Vercel (+ Functions), Netlify, Deno, Bun β€” behind a capability matrix that refuses at build time what the target cannot honour.

Architecture

request β†’ hyper β†’ limits β†’ static β†’ native rules β†’ route match
        β†’ L0 cache β†’ middleware β†’ loaders β†’ dispatch β†’ streaming SSR

Cached, redirected, rewritten and static answers never enter a JavaScript runtime. Four traits sit between the pipeline and every external engine:

Trait Purpose
PageRenderer page module + data β†’ HTML, buffered or streamed
LoaderRunner run page.server.ts loaders in the layout chain
MiddlewareDispatcher outer→inner; short-circuit, rewrite, or contribute locals
ActionDispatcher form POST routed to a named action

Eighteen Rust crates: server (hyper, static, compression, TLS), render (streaming SSR, HTML injection), router (tree, matcher, typegen), cache (three tiers), odf (wire format), compiler (Oxc passes), bundler (rolldown), jshost (V8 + Node), graph (incremental), plugin (Wasm), adapters (deploy), cli, plus assets, config, dev, diagnostics, schema, core-wasm.

Framework adapters

Adapter Package Extensions Peer deps
React @oxide-fw/react .tsx react@^19, react-dom@^19
Vue @oxide-fw/vue .vue vue@^3.6, @vue/server-renderer@^3.6
Svelte @oxide-fw/svelte .svelte svelte@^5
Solid @oxide-fw/solid .tsx solid-js@^2, @solidjs/web@^2

The loader is framework-neutral. It lives in page.server.ts and returns a plain object; only the component dialect differs:

// src/routes/blog/[slug]/page.server.ts β€” same for all four adapters
export async function load({ params }) {
  return { post: await getPost(params.slug) }
}
// src/routes/blog/[slug]/page.tsx β€” React
export default function Post({ data }) {
  return <article><h1>{data.post.title}</h1></article>
}

See examples/smoke-app-{react,vue,svelte,solid} for the four-way comparison.

The CLI

One binary. Grouped by intent:

  • Dev loop β€” oxide dev oxide build oxide start oxide preview
  • Inspect β€” oxide routes oxide analyze oxide why oxide doctor oxide check oxide config oxide render
  • Author β€” oxide generate oxide add oxide migrate oxide schema
  • Operate β€” oxide secrets oxide cache oxide audit oxide test oxide mcp
oxide doctor   # 7 env checks: node, cargo, config, routes, cache, secrets, cookie keys
oxide build    # bundles, prerender, typegen, manifests, deploy artifacts
oxide routes   # scan routes, infer render modes, emit typegen, print table
oxide mcp      # expose routes, config, audit, graph as MCP tools for agents

Building from source

git clone https://github.com/elcoosp/oxide
cd oxide
cargo build --release -p oxide-fw-cli
./target/release/oxide doctor

Four end-to-end fixtures ship under examples/:

oxide build --root examples/smoke-app-react
oxide start --root examples/smoke-app-react --port 3100

Project status

Pre-alpha. Built against a published specification and audited against it.

Spec compliance 95 / 100 on a 21-section scorecard β€” every finding public
CI 22 jobs on Linux, macOS, Windows β€” 21 per push, plus nightly Miri
Rust 1,239 test functions; clippy-clean at -D warnings with zero #[allow(clippy::*)]
Security cargo audit exits 0; one advisory suppressed with a reachability analysis

v0.1.0 is not yet tagged. Releases follow a 48-hour / 5-consecutive-green-CI soak rule β€” see PUBLISHING.md.

Documentation

Contributing

Read CONTRIBUTING.md β€” workflow, local gate list (identical to CI), pnpm config model, soak rule.

License

MIT OR Apache-2.0 β€” see LICENSE.


About

One Rust core. Every framework. A full-stack meta-framework with React, Vue, Svelte, and Solid adapters β€” compiles to a single static binary, deploys to 12 targets, with fast paths that skip JavaScript entirely. πŸ¦€βš‘

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages