Build an app with OlumJS and win $100! — Join Discord
Olum logo
Reactive HTML

Built for Prototypes,
Rapid Development

The fastest way to turn ideas into apps for hackathons and experiments.

$npx create-olum my-app --tailwind

Omit --tailwind to skip Tailwind CSS setup.

Live build · unedited

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.

todo-app — built live in OlumJS
Try it yourself in the playground

No install. Runs in your browser.

Syntax comparison

Same counter.
A fraction of the syntax.

No hooks, no signals to unwrap, no directives to memorize. Mutate a plain object — Olum re-renders.

Olum
Counter.html
<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>
vs.
<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>
SEO · Static routing

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.

olum build — one HTML file per route
dist/
├─ index.html→/
├─ about/index.html→/about
├─ blog/hello/index.html→/blog/hello
├─ not-found.html→404

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.

1 contributor

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.

#StandWithPalestine

We stand with Palestine

Our thoughts are with the people of Palestine. If you can, please consider supporting humanitarian relief efforts.

Support Palestine
Ready to ship

Start building in seconds.

One command. Full-stack ready. No configuration hell. Just code.

$npx create-olum my-app --tailwind

Omit --tailwind to skip Tailwind CSS setup.