Small on purpose.#
It should have stayed this simple.
One executable: an HTTP server, SQLite, and the Wren scripting language.
Build data-driven web apps from .wren files. No package
manager, no YAML, no separate database server, no build step. The Linux
x86_64 binary is 3.7 MB.
curl -fsSL https://get.bialet.dev | sh
Zero installation required. Just extract and run.
Other platforms, Homebrew, and Docker · MIT licensed · v1.2.7
Under a minute, start to styled
- A page, a form handler, a migration.
bialetserves the files. No build step.- Then a stylesheet and a layout class.
Rather type it than watch it? The quick start has the same files, in order, with the reasoning between them.
$ bialet dev → 127.0.0.1:7001
What you get#
One executable does the work: it serves HTTP, opens the SQLite file, and runs your Wren code. There is no stack to assemble around it.
One executable
Copy the binary to a server and run it. No runtime to install, no
node_modules. 3.7 MB on Linux x86_64.
SQLite is included
The database is one file. No connection strings, no service to provision, no separate process. WAL mode is one flag.
No build step
Save a .wren file and refresh the browser. No compiler, no bundler,
no watch process.
HTML, CSS, and SQL
Server-rendered pages, standard HTML and CSS, and SQL you write yourself. Add JavaScript only if you want it.
What it costs#
The tradeoffs
Small means bounded. These are the limits that come with it.
One worker per process, with instant queueing. Requests are served sequentially per worker. For parallel concurrency on multi-core servers, spin up multiple local instances behind Caddy or nginx. See Deployment.
HTTP/1.0, no native TLS. Bialet serves HTTP. Put nginx, Apache, or Caddy in front for HTTPS, HTTP/2, rate limiting, request buffering, and static-asset caching. See Deployment.
Wren, with basic tooling. Apps are written in Wren. The VS Code and Vim plugins provide syntax highlighting; autocomplete and an LSP are on the roadmap.
No WebSockets. Request/response HTTP only. Use polling or an external service for realtime features.
Where it fits#
Internal tools and admin panels
One process, one SQLite file, and a few users on one small server.
Prototypes and small sites
One directory to deploy. Add a reverse proxy when the site goes public.
Learning and teaching
HTML, SQL, and one scripting language. Nothing else to install.
Not a fit if you need multi-server horizontal scaling, in-process TLS, WebSockets, or a package ecosystem. Bialet does not provide them. See Why Bialet? for the longer version.