Boltzmann is a JavaScript framework for writing web servers. It is implemented in a single file that lives alongside your code. Boltzmann is focused on delivering a great developer experience and makes its tradeoffs with that goal in mind.
Our design goals:
- Make all return values from route handlers and middlewares be valid responses, mapping to http semantics.
- Prefer zero-cost abstractions: pay for what you use and nothing more, including in installation and startup time.
- Use global types, no special response types.
- Only modify objects we provide; do not rely on modifications to node's request & response objects.
- Provide pluggable behavior for body-parsing and middleware, with good defaults.
- Use only minimal, well-vetted dependencies.
- Bake in observability (optionally), via Honeycomb tracing.
- Rely on a little bit of documented convention to avoid configuration.
- Making throwing Boltzmann away if you need to move on possible.
Boltzmann is implemented in vanilla JavaScript and scaffolds a JavaScript project by default, with TypeScript definitions for your development convenience. It can scaffold a TypeScript project if you choose, but does not otherwise require you to opt into transpilation. We'd like you to be able to run Boltzmann apps under deno or in a web worker some day, so we make API choices that move us toward that goal.
For full Boltzmann docs, visit the documentation site.
If you prefer to look at working example code, we've provided examples in the ./examples
directory of this repo.
To scaffold a new service with Boltzmann, run the boltzmann
command-line tool. You can get it from the releases page or run it via npx boltzmann-cli
. (We prebuild for Mac OS, Windows, and GNU Linuxes.) The tool is responsible for initializing a new Boltzmann project as well as keeping it up to date. You enable or disable specific Boltzmann features using the tool.
For example, to scaffold with the defaults:
projects|⇒ npx boltzmann-cli hello
A complete project is provided for you, with useful package run scripts and linting. To run: ./boltzmann.js
. And to view the response: curl http://localhost:8000/hello/world
. Want to know more? Check the docs!
Boltzmann is a joint venture of @ceejbot and @chrisdickinson.
See HACKING.md.
Apache-2.0.