- Install bun & create a new project
❯ mkdir bunbox-example && cd bunbox-example ❯ bun init # work through prompts ❯ bun install
- Install
bunbox
❯ bun add bunbox
My goal with this project is to hideaway as much of the boiler plate import crud as I can, following in the footsteps of frameworks like Rails.
By default, this is the directory structure bunbox expects:
|
|- index.ts
|- controllers/
|- hello.ts
- Create a controller:
// controllers/hello.ts import { Controller } from "bunbox" import type { Context } from "bunbox" class HelloController implements Controller { route: string method: string constructor() { this.method = "GET" this.route = "/hello" } run = (c: Context) => c.text("Hello!") } export default HelloController
or in vanilla JavaScript:
// controllers/hello.js class HelloController { constructor() { this.method = "GET" this.route = "/hello" } run = c => c.text("Hello") }
- Update your
index.ts:
import BunBox from "bunbox" const box = new BunBox() box.serve()
- Run with
bun run index.ts:
❯ curl localhost:3000/hello
Hello!