About DOBS - dobs

About DOBS

do4ng - 25-10-26

In this blog, I'll introduce why I decided to create dobs and provide a brief overview of what it is.

#About dobs

dobs is a lightweight backend framework.

The previous backend framework I developed, zelyjs, which was made for personal side projects, had several issues:

  • Framework lock-in

Being bound to a framework isn't necessarily bad if the foundation is solid. However, I can't say that zelyjs had a strong foundation.

  • Unnecessary packages

The framework included serpack, which was initially created to support smart server caching by modifying low-level AST. However, during development, I realized that implementing smart server caching was nearly impossible. I kept developing it mostly for fun, which made the framework unnecessarily heavy. Although it achieved some speed improvements, they were negligible compared to the drawbacks—such as slower feature development due to constant serpack updates.

  • Terrible DX

It wasn't initially designed with developer experience in mind, but the DX ended up being truly terrible.


To address these issues, I decided to build a new framework. This framework will also be developed for personal side projects and is not intended for wide adoption. However, I aim to improve stability and DX so that it can support backend projects beyond small side projects.

#dobs Architecture

This framework consists of the following packages:

  • dobs: core package
  • @dobs/http: a simple server based on node:http
  • module-loader-ts: module loader supporting TypeScript, JavaScript, and JSON loading

#packages/dobs

The operation of dobs is quite simple:

  1. Create a server (call createDobsServer)
  2. Generate routes based on file names
  3. Compile TypeScript and JavaScript files (all files)
  4. Handle incoming requests

Modules used:

#packages/dobs-http

@dobs/http is a small base server module inspired by Koa.

Typescript
import server from "@dobs/http";
 
const app = server();
app.use((req, res, next) => {
  // ...
  next();
});
app.listen(8080);

It doesn't include a router—only middleware can be used.

INFO

Written on October 26, 2025 (very early version)

#packages/create-dobs

create-dobs is a tool for starting dobs app.

Terminal
npm create dobs

#packages/module-loader

module-loader-ts is module loader supporting TypeScript, JavaScript, and JSON loading.

Typescript
import { load } from "module-loader-ts";
import path from "path";
 
await load("./config", {
  extension: [".ts", ".js"],
});

Modules used:

#Future Plans

All useful features from zelyjs will be reimplemented, such as data caching and build support.

INFO

This post was originally written in Korean and translated into English using AI.