Nihilistic Party Mantra

    node-rem

    0.6.2 • Public • Published

    Node REM

    NodeJS Rest Express MongoDB

    Build Status Codacy Badge

    🌟 It rains cats and dogs features:

      Typescript      Express 4.15       CORS     Helmet    DotEnv   joi (validation)   forever
      Mongoose 4.9    Passport  JWT      Await
      Tslint          Apidoc    Docker   Husky    Morgan    Travis
      Tests
                Mocha  Chai     Sinon    istanbul
      MORE:
                HTTPS           HTTP2 (spdy)      Socketio 2.1       Slack message
                Nodemailer      Mailgun           Email Templates    File upload (multer)
                VSCode Debug    Dependabot        Codacy
          API
                API response    (data, meta: limit, offset, sort)    Transform res
                apiJson         Pagination query      Whitelist fields in response
                mstime          API response time     Stack trace in Response
    
    • More details in Feature Documentation
    • If you don't want Typescript, use this branch: node-rem-without-typescript

    📦 Installation

    Clone this project:

    git clone https://github.com/ngduc/node-rem.git your-app
    cd your-app
    rm -rf .git
    yarn
    
    • Update package.json and .env file with your information.
    • Run yarn dev, it will create a new Mongo DB "node-rem"
    • Verify: use Postman to POST https://localhost:3009/v1/auth/register to create a new user. (set payload to have email, password)

    🔧 Commands

    Require: MongoDB and NodeJS v8.12.0 +

    yarn dev      launch DEV mode
    yarn start    launch PROD mode
    yarn stop
    
    yarn test     Run tests
    

    📖 Features

    Your simple API Route Handler will have a nice syntax like this: (packed with vitamins cool stuffs)

    exports.list = async (req: Request, res: Response, next: NextFunction) => {
      try {
        const data = (await User.list(req)).transform(req); // query & run userSchema.transform() for response
        apiJson({ req, res, data, model: User }); // return standard API Response
      } catch (e) {
        next(e);
      }
    };

    API Response is similar to JSON API standard:

    GET https://localhost:3009/v1/users?fields=id,name (get id & name only in response)
    GET https://localhost:3009/v1/users?role=admin&page=1&perPage=20 (query & pagination)
    GET https://localhost:3009/v1/users?role=admin&limit=5&offset=0&sort=email:desc,createdAt
    {
        "meta": {
            "limit": 5,
            "offset": 0,
            "sort": {
                "email": -1,
                "createdAt": 1
            },
            "totalCount": 4,
            "timer": 3.85,
            "timerAvg": 5.62
        },
        "data": [
            {
                "id": "5bad07cdc099dfbe49ef69d7",
                "name": "John Doe",
                "email": "john.doe@gmail.com",
                "role": "admin",
                "createdAt": "2018-09-27T16:39:41.498Z"
            },
            // more items...
        ]
    }

    Example of generated API Docs (using apidoc) - https://node-rem.netlify.com

    📖 Documentation

    🙌 Thanks

    All contributions are welcome!

    danielfsousa/express-rest-es2017-boilerplate

    Install

    npm i node-rem

    DownloadsWeekly Downloads

    0

    Version

    0.6.2

    License

    MIT

    Unpacked Size

    411 kB

    Total Files

    63

    Last publish

    Collaborators

    • ngduc