Skip to content

medishen/gland

Repository files navigation

Gland

Gland is a lightweight and extensible web server framework for Node.js. It provides a flexible and modular approach to building web applications, including support for middleware, routing, logging, and SQL query execution.

Features

  • Modular Configuration: Load and configure modules dynamically.
  • Middleware Support: Easily add and manage middleware functions.
  • Routing: Define routes using decorators for different HTTP methods.

Installation

You can install @medishn/gland via npm:

npm install @medishn/gland

Basic Usage

To get started with @medishn/gland, follow these steps:

  1. Create a Basic Server

    import path from 'path';
    import gland from '@medishn/gland';
    
    const g = new gland();
    g.load(path.join(__dirname, '.confmodule'));
    g.init(3000, () => {
      console.log('Server running on port 3000');
    });
  2. Define Routes and Handlers Create a .confmodule file to configure your routes, caching, and file-watching behavior. This file allows you to dynamically load and configure modules in your application. Below is an example configuration file:

path = path.join(__dirname, 'router');
router {
    [0]: 'index.ts';
    [1]: 'test.ts';
}
cache = true;
watch = true;
  1. Create Router:(/router/example.ts)
    import { Context, Get, Route } from '@medishn/gland';
    
    @Route('/')
    export class Test {
      @Get()
      test(ctx: Context) {
        ctx.write('hello world');
        ctx.end();
      }
    }

Middleware

You can add middleware functions to your Gland instance:

import gland, { Context,NxtFunction } from '@medishn/gland';

const g = new gland();

const myMiddleware = async (ctx: Context, next: NxtFunction) => {
  // Middleware logic here
  await next();
};

g.use(myMiddleware);

Routing

Define routes using decorators:

import { Context, Get, Post, Route } from '@medishn/gland';

@Route('/example')
export class Example {
  @Get()
  getExample(ctx: Context) {
    ctx.write('GET request');
    ctx.end();
  }

  @Post()
  postExample(ctx: Context) {
    ctx.write('POST request');
    ctx.end();
  }
}

Contributing

We welcome contributions to the Gland project. Please follow these steps:

  1. Fork the repository.
  2. Clone your fork and create a new branch.
  3. Make your changes and write tests.
  4. Commit your changes with a descriptive message.
  5. Push your changes and create a pull request.

For more details, see the CONTRIBUTING.md.

Security

For information on security practices and reporting vulnerabilities, please refer to SECURITY.md.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contact

For any questions or further assistance, please reach out to us at bitsgenix@gmail.com.