- 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!