Skip to content

giorgi225/express-route-registry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RouteRegistry for Express.js

A scalable, type-safe route registry system for Express.js using TypeScript.

Features

  • Nested route tree support
  • Versioned base paths (/v1, /v2, etc.)
  • Global, group, and route-level middleware
  • Clean logging of all registered routes
  • Fully type-safe (Route, RouteTree, RouteGroup)
  • Easily extendable for multiple API versions

Compatibility

  • Node.js: v18 or higher
  • Express.js: v5.x
  • TypeScript: v5.x
  • ts-node / nodemon: For development and live reloading

Installation

git clone https://github.com/giorgi225/express-route-registry.git
cd route-registry
npm install
npm run dev

Usage

import express from "express";
import { RouteRegistry } from "./core/router";
import { authRouteGroup } from "./router/auth/routes";

const app = express();

// Initialize versioned route registries
const routerV1 = new RouteRegistry({ version: "v1", logging: true });
const routerV2 = new RouteRegistry({ version: "v2", logging: true });

// Register route groups
routerV1.registerGroup(authRouteGroup);
routerV2.registerGroup(authRouteGroup);

// Mount routers under /api
app.use("/api", routerV1.getRouter());
app.use("/api", routerV2.getRouter());

// Log all registered routes
routerV1.logRegisteredRoutes();
routerV2.logRegisteredRoutes();

// Start the server
app.listen(8000, () => console.log("Server running at http://localhost:8000"));

RouteGroup Example

import { Request, Response } from "express";
import { ApiRouter } from "../../types/route.types";

export const authRouteGroup: ApiRouter.RouteGroup = {
  basePath: "/auth",
  middleware: [], // optional middleware for this group
  routes: {
    login: {
      method: "get",
      path: "/login",
      middleware: [], // optional middleware for this route
      handler: (req: Request, res: Response) => res.send("Login"),
    },
    register: {
      method: "get",
      path: "/register",
      middleware: [],
      handler: (req: Request, res: Response) => res.send("Register"),
    },
  },
};

License

The MIT License.

About

Simplify route management, versioning, and middleware in Express apps with a fully type-safe and extendable architecture.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors