title: wwwhat — What if HTML was enough? layout: none fetch.dog = "https://dog.ceo/api/breeds/image/random" set.wired.dog_url = "#dog.message#" wwwhat — What if HTML was enough?
Built with Rust

What if HTML was enough?

Build full-stack web apps with HTML attributes. No JavaScript. No backend code. Just ship.

See it live

This button increments a server-side counter. Read it slowly.

counter.html
<button w-set="session.counter += 1">+1</button>

That's it. No event handler. No API route. No state management library.
The HTML is the logic.

Don't take our word for it. Try it.

This is a live demo. The button fetches a random dog photo from an API, increments your session counter, and updates a wired counter that pushes to every connected browser in real time.

Random dog
#wired.dog_count|default:"0"#
Everyone (wired)
#session.dog_count|default:"0"#
You (session)

Open this page in a different browser — your count resets, the wired count updates in real time across both.

partials/next-dog.html
<!-- Fetches a random dog and pushes the URL to all browsers --> <what> fetch.dog = "https://dog.ceo/api/breeds/image/random" set.wired.dog_url = "#dog.message#" </what> <img src="#wired.dog_url#" w-bind="wired.dog_url" />
index.html
<!-- Same image on every browser (wired URL) --> <div id="dog-photo"> <img src="#wired.dog_url#" w-bind="wired.dog_url" /> </div> <button w-set="session.dog_count += 1; wired.dog_count += 1" w-get="/partials/next-dog" w-target="#dog-photo"> Next Dog </button> <!-- Real-time counter pushed to ALL browsers --> <span>#wired.dog_count#</span> <!-- Per-user session counter --> <span>#session.dog_count#</span>

Everything you need. Nothing you don't.

What you'd normally install, configure, and debug separately -- built in.

File-based routing

Your file structure is your URL structure. pages/post/[id].html becomes /post/123.

Server state

Sessions, counters, lists -- mutated from HTML attributes. No backend code.

Built-in auth

JWT authentication with role-based access control. Declared in your templates.

Data stores

JSON-backed collections with CRUD. Forms that save, update, and delete -- no API routes.

Components

HTML files become custom elements. Props, slots, defaults. No JavaScript required.

CSS framework

Utility-first styles included. No npm, no PostCSS, no config. One file.

Front-end development is over-engineered.

Every few years, the web reinvents how we build applications. New frameworks promise simplicity but deliver complexity. We chase patterns while the fundamentals remain unchanged: HTML renders content, CSS styles it, and servers process data.

wwwhat is a Rust-powered framework that turns plain HTML into full-stack applications -- file-based routing, server state, auth, and data, all without writing a single line of JavaScript or backend code.

Get early access

Launching soon. The first wave is limited.

Star on GitHub