ekko:runeThe full-stack framework built into EkkoJS.
The full-stack framework built into EkkoJS.
A folder of .tsx files becomes a server-rendered, instantly-navigable app: file-based routing, SSR with caching, Mimir state that survives an F5, API routes, and a one-command build, with no node_modules and no separate API server.
// server.tsx , the whole backend
import { createApp, scanRoutes, readManifest } from "ekko:rune";
const app = createApp({ port: 3000, manifest: readManifest() });
for (const r of scanRoutes("pages"))
app.page(r.pattern, modules[r.pattern], { page: r.pageKey });
app.start();
// pages/index.tsx , a page
export function ssr() { return { title: "Home" }; }
export default function Home() {
const [n, setN] = useAtom(countAtom); // survives navigation
return <button onClick={() => setN(n + 1)}>Clicked {n}x</button>;
}Everything to ship a full-stack app
One runtime, one process, one mental model. Each piece has a deep chapter in the docs.
File-based routing
pages/blog/[slug].tsx is /blog/:slug. Static beats dynamic beats catch-all, no route table to maintain.
SSR, then SPA
Real HTML on first paint (fast + indexable), then every navigation is client-side and instant, automatically.
Mimir state
Atoms outside the component tree survive navigation and, with a session, an F5. The server can seed them with no flicker.
API in the same process
app.api(...) runs beside your pages. No second server, no CORS, no type boundary, just function calls.
SSR cache + invalidation
Eager, background, or lazy rendering with tag and path invalidation. Bust a page from an API handler.
A real build
ekko build --client produces a content-hashed, code-split bundle and a manifest, no node_modules, no config.
SEO built in
createSEO() emits title, Open Graph, Twitter, canonical, robots, and sitemaps from one config.
Themed, no flash
SCSS compiled at start, a theme atom, and a no-FOUC script: dark/light with correct first paint.
Secure by default
Deny-by-default permissions: the app only touches the files, hosts, and env vars you grant.