Skip to content

DarthBenro008/melonpan

Repository files navigation

banner release GitHub License PRs Welcome PRs Welcome

Melonpan is a simple and minimalistic web-router designed to work with Bun, keeping performance in mind.

🤔 Why Melonpan?

  • 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

⚡️ Quickstart

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);
    }
}

🤖 Benchmarks

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

Results

benchmark

Almost an 8x performance, thanks to Bun.

You can find the benchmark suite here

⬇️ Installation

Using Bun

  1. Install Bun
curl https://bun.sh/install | bash
  1. Add Melonpan as dependency using bun
bun add melonpan

Using Yarn

yarn add melonpan

Using NPM

npm install melonpan

🤝 Contributions

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

📢 Shoutouts

Shoutout to Khyati Gupta for amazing logo and banner illustrations

⚖ License

Copyright 2022 Hemanth Krishna

Licensed under MIT License : https://opensource.org/licenses/MIT

Made with ❤ , multiple cups of coffee and some chaii