Why Bialet?#
Bialet makes a specific trade-off: maximum simplicity for a narrow but common set of use cases. This page explains what that means, when it’s a good fit, and how it compares to other tools.
The Philosophy#
Most web frameworks optimize for flexibility. They give you middleware stacks, ORM layers, routing DSLs, template engines, and configuration files — all designed to handle any scenario you might encounter.
Bialet optimizes for getting things done on a single server. It bundles the
HTTP server, the database, and the language runtime into one binary. Your app
is a directory of .wren files and a SQLite database. That’s it.
If your needs fit within Bialet’s scope, you get an experience no other framework can match: zero-config development, single-command deployment, and no dependency management.
If your needs grow beyond that scope, you’ll want a different tool — and that’s okay.
When to Use Bialet#
Prototypes and MVPs — Go from idea to working app in minutes. No setup, no boilerplate.
Internal tools and dashboards — Admin panels, reporting UIs, data browsers. The database is already there.
Simple CRUD applications — Blogs, polls, task trackers, form-based apps.
Learning web development — Skip the configuration and focus on HTML, SQL, and basic programming concepts.
Single-server deployments — Small to medium traffic sites on a VPS or shared host.
When NOT to Use Bialet#
High-traffic public sites — Bialet is a single-process server. It can’t distribute load across multiple machines.
Real-time applications — No WebSocket or Server-Sent Events support. Polling works for simple cases, but it’s not ideal.
Large teams with existing infrastructure — If you already have PostgreSQL, Redis, and a CI pipeline, Bialet’s simplicity isn’t buying you much.
Microservices — Bialet is designed for monolithic apps on a single server.
Complex auth flows — Bialet supports basic auth and sessions, but not OAuth, SAML, or multi-factor authentication out of the box.
Comparisons#
Bialet vs. PHP#
PHP is the closest philosophical relative. Both let you drop files in a directory and serve them immediately. Both embed logic in HTML.
Bialet |
PHP |
|
|---|---|---|
Language |
Wren (object-oriented) |
PHP |
Database |
SQLite built-in, always present |
Must install and configure |
Deployment |
Single binary + app directory |
PHP runtime + web server + DB |
Package manager |
None (import from GitHub URLs) |
Composer |
Template engine |
Inline HTML strings (JSX-like) |
Plain PHP or Twig/Blade |
Configuration |
None |
php.ini, .env, server config |
Bialet wins on simplicity. PHP wins on ecosystem and scalability.
Bialet vs. Flask / Express#
Flask and Express are minimalist frameworks, but they still need a database driver, a template engine, and often an ORM — all configured separately.
Bialet |
Flask / Express |
|
|---|---|---|
Setup |
One binary, zero config |
Install packages, configure DB |
Database |
SQLite built-in |
SQLAlchemy + driver (Flask) |
Routing |
File-based |
Decorators / router definitions |
Templates |
Inline HTML + interpolation |
Jinja2 / EJS / Pug |
Production |
Single binary |
gunicorn + nginx / pm2 + nginx |
Language |
Wren |
Python / JavaScript |
Bialet eliminates the “glue code” phase entirely. Flask/Express give you more control over the stack but require more decisions up front.
Bialet vs. Rails / Django#
Rails and Django are full-stack frameworks with ORMs, admin interfaces, migrations, and extensive ecosystems. Bialet is full-stack in a different way: it bundles the essentials, nothing more.
Bialet |
Rails / Django |
|
|---|---|---|
Learning curve |
Hours |
Weeks to months |
ORM |
Raw SQL with Query objects |
ActiveRecord / Django ORM |
Admin panel |
Build your own |
Built-in (Django admin) / gems |
Migrations |
|
Versioned migration files |
Scaling |
Single process |
Horizontally via workers/load bal |
Ecosystem |
Minimal |
Massive (gems / packages) |
If you’re building a complex, long-lived application with a team, Rails or Django are better choices. If you’re building something simple today, Bialet gets you there faster.
Bialet vs. Static Site Generators#
Static site generators (Hugo, Jekyll, Eleventy) produce HTML files at build time. Bialet generates HTML at request time and includes a database.
If your site has no dynamic data and no forms, use a static site generator. If you need a database, forms, or user-specific content, Bialet is the lighter alternative to a full backend framework.
The Trade-off#
Bialet is intentionally limited. It doesn’t have:
Horizontal scaling
WebSockets
Background job queues (beyond Cron)
A plugin ecosystem
PostgreSQL / MySQL support
An ORM
OAuth or social login
What it does have is everything you need to build a data-driven website in a single binary. For many projects, that’s exactly the right trade-off.