Backend Framework for BunJS



This content originally appeared on DEV Community and was authored by Destian Noval

🚀 Getting Started with Oxarion: Practical Usage Guide

Are you looking for a fast, modern, and easy-to-use Bun.js web framework? Oxarion is here to help you build web servers, APIs, and real-time apps with minimal fuss. In this post, I’ll show you how to get up and running with Oxarion, with practical code examples you can use right away.

⚠ Note: Oxarion is built specifically for Bun. You must use Bun.js to run Oxarion projects—Node.js is not supported!

⚡ Installation

First, install Oxarion in your project:

bun add oxarionjs

🏁 Creating Your First Server

Let’s create a simple HTTP server that responds with “Hello, Oxarion!”.

// myServer.js

import Oxarion from "oxarionjs";

Oxarion.start({
  port: 3000,
  httpHandler: (router) => {
    router.addHandler("GET", "/", (_, res) => {
      res.send("Welcome to Oxarion");
    });
  },
});

Start your server and visit http://localhost:3000 in your browser!

🧩 Using Middleware

Middleware lets you add custom logic to your request/response pipeline. Here’s how to log every request:

router.middleware("/", (req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next();
});

You can add as many middleware functions as you like, for things like authentication, parsing, or error handling.

🛣 Defining Routes

Oxarion makes it easy to define routes for different HTTP methods and paths:

router.addHandler("GET", "/get-req", (req, res) => {
  res.send("This is GET Request");
});

router.addHandler("POST", "/post-req", (req, res) => {
  res.send("This is POST Request");
});

You can access query parameters, request bodies, and more via the req object.

🌐 Real-Time with WebSockets

Building a chat app or real-time dashboard? Oxarion has built-in WebSocket support:

// myWs.js

import Oxarion from "oxarionjs";

Oxarion.start({
  port: 3000,
  httpHandler: (router) => {
    // Upgrade path to accept WebSocket
    router.switchToWs("/ws");
  },

  wsHandler: (watcher) => {
    // Path watcher to handle incoming data
    watcher.path("/ws", {
      onOpen: (ws) => {
        console.log("Ws Opened");
      },
      onClose: (ws, code, reason) => {
        console.log(`Ws Closed: Code: ${code}, Reason: ${reason} `);
      },
      onDrain: (ws) => {
        console.log("Ws Drained");
      },
      onMessage: (ws, message) => {
        console.log(`Incoming Message: ${message.toString()}`);
      },
    });
  },
});

Connect to ws://localhost:3000/ws with your favorite WebSocket client!

🧪 Try the Examples

Check out the examples/ folder in the repo for more sample code:

  • simple_server.js – Basic HTTP server
  • middleware.js – Using middleware
  • routes_wrapper.js – Advanced routing
  • websocket_server.js – WebSocket server

📝 Wrapping Up

Oxarion is designed to get you building web apps and APIs quickly, with a clean and modern API. Whether you’re prototyping or building production apps, give Oxarion a try!

Questions or feedback? Drop a comment below or open an issue on GitHub!


This content originally appeared on DEV Community and was authored by Destian Noval