Node REM
NodeJS Rest Express MongoDB
🌟 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)
exportslist = async { try const data = await User; // query & run userSchema.transform() for response ; // return standard API Response catch 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": 385 "timerAvg": 562 "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!