Melonpan is a simple and minimalistic web-router designed to work with Bun, keeping performance in mind.
- no/minimal learning curve
- Developer focused, you just need to focus on buisness logic
- 0 bloat functions
- 0 dependencies
- 100% Typescript code
- Blazing fast performance than node webframework alternatives
import { Melonpan, MelonRouter } from "melonpan";
const melonpan = new Melonpan();
// Simple middleware definitions
melonpan.middleware((_req, ctx, next) => {
console.log("A middleware has been hit!")
})
// Easy query params parsing!
melonpan.get("/api/:id", (_req, ctx) => {
return ctx.json({"id": ctx.params.id}, 200);
})
// Routing done in very simple manner
melonpan.get("/" , (_req, ctx) => ctx.text("Hello world!"));
// Easy definitions of routers and handlers!
const melonRouter = new MelonRouter();
melonRouter.get("/bar", (_req, ctx) => ctx.text("this is a router", 200));
melonpan.use("/foo", melonRouter);
export default {
port: 3000,
fetch(req: Request){
return melonpan.serve(req);
}
}
The following results are of:
- Test: Bun
(v0.1.11)
+ Melonpan(v0.1.0)
Vs NodeJS(v16.13.0)
+ Express(v4.18.1)
- Machine: MacBook M1 Pro 16GB RAM
- Benchmarking tool used: Autocannon
Almost an 8x performance, thanks to Bun.
You can find the benchmark suite here
- Install Bun
curl https://bun.sh/install | bash
- Add Melonpan as dependency using bun
bun add melonpan
yarn add melonpan
npm install melonpan
- Feel Free to Open a PR/Issue for any feature or bug(s).
- Make sure you follow the community guidelines.
- Feel free to open an issue to ask a question/discuss anything about melonpan.
- Have a feature request? Open an Issue!
- Please ensure to run
bun test
before submitting your PRs!
Shoutout to Khyati Gupta for amazing logo and banner illustrations
Copyright 2022 Hemanth Krishna
Licensed under MIT License : https://opensource.org/licenses/MIT
Made with ❤ , multiple cups of coffee and some chaii