baiji

    0.8.31 • Public • Published

    Baiji (白鱀豚 🐬)

    Build Status

    Bring the 🐬(beauty) back to life.

    Baiji is an easy to use and opinionated micro-framework for writing scalable and REST-like web applications.

    Baiji is an ideal candidate for building robust, scalable and secure web things.

    Features

    • Adapters support: Express, Socket.io, more supports will comming soon
    • Hooks, enabling the power of scalability of your api method
    • Modern Controller syntax
    • Smart routes sorter
    • Sweet debug info
    • Built-in parameter filter
    • Entities - a simple Facade to use with your models and API

    Basic Use Case Preview

    Using ES6 Syntax

    const baiji = require('baiji');
    const app = baiji('my-example-app');
    
    class UsersCtrl extends baiji.Controller {
      constructor() {
        super();
        // Use before actions
        this.beforeAction('signInRequired');
      }
    
      initConfig() {
        return {
          search: {
            description: 'Search users...',
            route: { path: '/', verb: 'get' }
          }
        }
      }
    
      signInRequired(ctx, next) {
        if (ctx.state.isSignedIn()) return next();
        ctx.done({ error: 'Unauthorized' });
      }
    
      search(ctx, next) {
        ctx.done([{ username: 'lyfeyaj', gender: 1 }], next);
      }
    }
    
    // Use express middleware: response-time
    app.use(require('response-time')());
    // Use express middleware: cookie-parser
    app.use(require('cookie-parser')());
    
    // Use controller
    app.use(UsersCtrl);
    
    // Start app and listen on port 3000
    app.listen(3000);

    TODOs

    • Add RPC support

    License

    Install

    npm i baiji

    DownloadsWeekly Downloads

    20

    Version

    0.8.31

    License

    MIT

    Unpacked Size

    132 kB

    Total Files

    57

    Last publish

    Collaborators

    • lyfeyaj