Built for Prototypes,
Rapid Development
The fastest way to turn ideas into apps for hackathons and experiments.
npx create-olum my-app --tailwindOmit --tailwind to skip Tailwind CSS setup.
Blank File to Todo App
Before Your Coffee Gets Cold
Start from an empty file and have a working app in under 5 minutes — no setup, no config. Watch it happen, then build your own.
No install. Runs in your browser.
Same counter.
A fraction of the syntax.
No hooks, no signals to unwrap, no directives to memorize. Mutate a plain object — Olum re-renders.
<script> const state = { name: "world", count: 0 }; </script> <h1>Hello {state.name}!</h1> <input value="{state.name}" oninput="e => state.name = e.target.value" /> <button onclick="state.count += 1">clicks: {state.count}</button>
<script> let name = $state("world"); let count = $state(0); </script> <h1>Hello {name}!</h1> <input bind:value={name} /> <button onclick={() => count += 1}>clicks: {count}</button>
Everything works
out of the box.
Official packages built and maintained by the Olum team — fully integrated, always up to date.
Plain HTML
Components are ordinary `.html` files — no extension, formatter, or plugin required.
CLI
Scaffold Olum apps and pull Olum UI components straight into your codebase — no extra deps.
Router
File-based routing with dynamic segments, nested layouts, and async data loading.
Store
Plain object-style global state — define it once, import anywhere, no providers to wire up.
Transitions
Animate elements as they enter and leave, with built-in and fully custom transitions.
Olum UI
A shadcn-inspired component library — copy components into your project and own the code.
Sandbox
An in-browser playground — write Olum components and see them run live, no setup required.
Olum Icons
A curated icon set for Olum apps — drop-in SVG components, tree-shakeable and fully typed.
Playground
Explore Olum components interactively — tweak props and see instant results.
Editor Extension
Syntax highlighting, IntelliSense, auto-imports, and inline previews for `.html` components.
Dev Tools
Visualize the component tree, tweak state live, and time-travel through changes.
Fully Static.
Routes Like a Server.
Write client-first. Stay SEO-friendly. Deploy statically — with the routing experience of a server catch-all.
Client-first
Keep writing plain Olum components. Same files, same router, no server runtime and no new mental model.
SEO-friendly
Every route ships real HTML. Crawlers, link previews and readers get the content without running a line of JS.
Static deploy
Drop the output folder on GitHub Pages, S3 or any CDN. No rewrite rules, no catch-all config, no server to babysit.
Deep links resolve on the host itself — no index.html fallback rule, no hash URLs. The client router still takes over after the first paint.
Built for the modern stack
Built in the Open
By People, Not a Committee
Every commit across olum and olum-compiler. Open a pull request and your face lands here.

Hi, I'm Eissa, the creator of OlumJS.
I'm open to freelance and full-time work. eissapk@zohomail.com
We stand with Palestine
Our thoughts are with the people of Palestine. If you can, please consider supporting humanitarian relief efforts.
Start building in seconds.
One command. Full-stack ready. No configuration hell. Just code.
npx create-olum my-app --tailwindOmit --tailwind to skip Tailwind CSS setup.