melonpan

    0.1.1 • Public • Published

    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

    Install

    npm i melonpan

    DownloadsWeekly Downloads

    13

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    429 kB

    Total Files

    17

    Last publish

    Collaborators

    • darthbenro008