Building websites
like it's 1997.
A Bun-native web framework that trusts the platform. File-based routing, zero build steps, HTML that works, JavaScript that ships.
The web platform is enough.
Stop fighting your framework. Start shipping.
Zero Config
The file is the route. Drop about.phtml in your pages directory, get /about. No router setup, no config file, no thinking.
Web Platform First
HTML forms, HTTP verbs, browser APIs. index97 doesn't invent new abstractions — it makes the ones you already know work beautifully.
Bun Native
SQLite, password hashing, markdown rendering, file serving, WebSockets — all built in. Zero extra dependencies to manage.
Hot Reload
SSE-based HMR that re-stamps CSS without a page reload. See your changes instantly — inspired by Bret Victor's "seeing space."
Layouts & Slots
Named slots with default values. Layout data providers. Per-directory layouts. Everything composes cleanly without magic.
Just JavaScript
ES modules, async handlers, no transpilation step. Export a GET function, return an object, done. It's that simple.
Drop a file. Get a route.
// blog/[slug].js
import { getPost } from './_db.js'
export async function GET(req) {
const post = getPost(req.params.slug)
if (!post) return new Response('', { status: 404 })
return { post }
}
<!-- blog/[slug].phtml -->
<h1>{{post.title}}</h1>
<p>{{post.body}}</p>
<a href="/index97/blog">← Back</a>
Start building in seconds.
No front-end application templates to clone. Just Bun and a folder.