Bialet#

Bialet

Web apps from HTML and SQL. Nothing else.

One binary under 1 MB with a built-in database. No build step, no dependencies, no config — write a file, refresh the browser.

Install Bialet with a single command — macOS ARM, Ubuntu x86_64, or Ubuntu ARM:

curl -sSL https://get.bialet.dev | sh
Get Started View on GitHub

Features#

Zero Configuration

Start coding in seconds — no YAML, no JSON, no setup files. Run bialet in any directory and it just works.

SQLite Built-in

Store and query real data with zero setup — no separate DB to install or connect. Migrations, queries, and CRUD work out of the box.

Single Binary

Deploy by copying one file under 1 MB — no runtime, no package manager, no external services to provision. Ship anywhere in one step.

No Build Step

See changes instantly — edit a .wren file, refresh the browser, done. No compile, no bundler, no watch process.


Getting Started#

Once installed, run bialet in your project folder and open 127.0.0.1:7001. Here’s a complete app in one .wren file:

// Bialet is a single-binary web framework: Wren scripting + SQLite, file-based routing.
// Drop `.wren` files in a folder, run `bialet`, and you have a server-rendered app.
var title = "🚲 Welcome to Bialet showcase"

// Normally, table creation goes in `_migration.wren` (run once at startup).
// Placed here so this showcase file is fully self-contained.
`CREATE TABLE IF NOT EXISTS items (phrase TEXT)`.query

// POST handling
if (Request.isPost) {
  Db.save('items', {"phrase": Request.post("input").trim() })
  System.log('✅ Item saved')
}

// Querying
var items = `SELECT * FROM items`.fetch

// Inline HTML with `{{ … }}`
var content = <section>
  <h2>Items</h2>
  {{ items.count > 0 ?
    <ul>
      {{ items.map{|item| <li>{{ item["phrase"] }}</li> } }}
    </ul> :
    <p>No items, create one!.</p>
  }}
</section>

// Every `.wren` file is a handler; `return` sends the response body to the client.
// Use `<!doctype html>` for full HTML pages.
return <!doctype html>
<html>
  <head>
    <title>{{ title }}</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.fluid.classless.min.css">
  </head>
  <body>
    <main>
      <h1>{{ title }}</h1>
      <form method="post">
        <input name="input" placeholder="Write some text..">
        <input type="submit" value="Add new item">
      </form>
      <hr>
      {{ content }}
    </main>
    <footer>Made with <a href="https://bialet.dev">Bialet</a></footer>
  </body>
</html>

Bialet integrates the object-oriented Wren language with a HTTP server and a built-in SQLite database — in a single binary. No configuration files, no dependencies, no build step. Just write .wren files and run.


Who is Bialet for?#

Prototyping & Internal Tools

Spin up a data-driven dashboard or admin panel in minutes. Bialet’s all-in-one design means zero infrastructure overhead.

Learning Web Development

Focus on HTML, SQL, and basic logic — not webpack configs, package managers, or ORM abstractions.

Developers Who Value Simplicity

If you prefer a single tool that does one thing well over a dozen micro-libraries, Bialet is for you.


📖 Documentation All Install Options

🚲 Let's build together

Bialet is maintained by a solo developer, but the community is open to everyone. Whether you're stuck on a query, have a feature idea, or want to show off your project, GitHub Discussions is the place. Search first, ask second, and be kind.

Join the discussion →