$ man bunary
A small backend framework. On purpose.
Bunary brings Laravel's conventions to Bun — as plain functions with explicit exports. No DI container, no decorators, no magic. If you can read TypeScript, you can read your whole stack.
$ bun add -g @bunary/cliimport { createApp } from "@bunary/http";
import { User } from "../models/user";
const app = createApp();
app.get("/users/:id", async (ctx) =>
User.find(ctx.params.id)
);
// that's the whole file.## what "on purpose" means
No DI container
Dependencies are function arguments. Grep finds them; your IDE follows them.
No decorators
Routes are plain function calls. Nothing runs before your code does.
Bun-native, no shims
Bun.serve(), Bun.file(), Bun.env — used directly. No Node compatibility tax.
Explicit exports only
Every public API is deliberate and documented with a usage example. Nothing leaks.
## the five-minute tour
import { createApp } from "@bunary/http";
const app = createApp();
app.get("/", () => {
return { message: "Hello, World!" };
});
app.listen({ port: 3000 });createApp() builds the router. app.get() registers a handler and app.listen() starts the server.
## six packages, strictly layered
Dependency arrows point one way. Use one package or all six.
## where it's at
Bunary is v0.x and under active development — APIs may still move. It's open source and built in public: the docs, this site, and every package live at github.com/bunary-dev. If something's wrong, open an issue; if something's missing, it might be a good first PR.