oxide@build:~ship the backend, skip the framework
Turn Vite or Rsbuild into a full-stack build. Import server functions in client code with end-to-end types, then deploy one server bundle anywhere.
[ok] 1 plugin · 1 build · 1 deployable tree
- runtime
- node / bun / deno
- bundler
- vite / rsbuild
- entry
- src/server.ts
- rpc
- effect
- agentic
- llms.txt
- deploy
- vps / workers / vercelvps / celld / cloudflare / vercel
server code in. deployable app out.
Five files. No controllers, client SDK, or second build pipeline.
[01] // less plumbing. more shipping.
▸ call server code directly
Import a *.server.ts function in the browser. Oxide turns the call into typed RPC and keeps the implementation on the server.
▸ stream by yielding
Export an async generator to stream values over chunked JSON-RPC. Consume it with for await and cancel with an abort signal.
▸ deploy boring output
Get one ESM server bundle plus optional client assets. Run it on a VPS, celld, Cloudflare, or Vercel.
[02] // one build. no backend side project.
$ tree dist/
dist/
├── client/ # if you have a page
└── server.js # your backendBuild once with vite build. Oxide emits the browser assets and a server you can run withnode dist/server.js. Server actions use typed Effect RPC over HTTP or WebSocket.
[03] $ ship something
Add one plugin. Write one server function. Call it from the browser. Your backend is ready to ship.