UNPKG

@mantris/appify

Version:
88 lines (69 loc) 4.97 kB
``` d8888 d8b .d888 d88888 Y8P d88P" d88P888 888 d88P 888 88888b. 88888b. 888 888888 888 888 d88P 888 888 "88b 888 "88b 888 888 888 888 d88P 888 888 888 888 888 888 888 888 888 d8888888888 888 d88P 888 d88P 888 888 Y88b 888 d88P 888 88888P" 88888P" 888 888 "Y88888 888 888 888 888 888 Y8b d88P 888 888 "Y88P" ``` [![MIT license](https://img.shields.io/badge/License-MIT-blue.svg)](https://lbesson.mit-license.org/) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) ![NPM latest version](https://img.shields.io/npm/v/@mantris/appify.svg?style=flat&colorB=green) ![Package minziped size](https://img.shields.io/bundlephobia/minzip/%40mantris%2Fappify.svg?style=flat&colorB=yellowgreen) ![NPM total downloads](https://img.shields.io/npm/dt/@mantris/appify.svg?style=flat&colorB=yellow) ![NPM monthly downloads](https://img.shields.io/npm/dm/@mantris/appify.svg?style=flat&colorB=orange) ![NPM weekly downloads](https://img.shields.io/npm/dw/@mantris/appify.svg?style=flat&colorB=red) Appify is a very opinionated Node.js API boilerplate as module shipped with out of the box integration with Sentry and DeepTrace. ## Install ```sh npm i @mantris/appify ``` ## Usage ```js // app.js const appify = require('@mantris/appify') const connect = require('some-db-lib') module.exports = appify(async (api, config, environment) => { const db = await connect(config.db) api.get('/users/:id', (req, res) => { res .set({ 'x-environment': environment }) .json(db.users.find(req.params.id)) }) }) ``` ```js // config.js const { env } = require('@mantris/appify') module.exports = (environment) => ({ db: { dbname: `mydb-${environment}`, dbhost: env.get('DB_HOST', 'mongo://localhost:27107') } }) ``` ```sh appify --debug --pretty-errors --config config.js app.js ``` ## Environment variables | Setting | Vars | Type | Default value | | :---------------------------------------- | :-----------------------------------------------: | :-------: | :---------------------------------------------------------------: | | Your app's version/release | `GIT_RELEASE` | `string` | `null` | | Release commit | `GIT_COMMIT` | `string` | `null` | | DeepTrace's DSN | `APPIFY_DEEPTRACE_DSN` or `DEEPTRACE_DSN` | `string` | `null` | | DeepTrace's agent timeout | `APPIFY_DEEPTRACE_TIMEOUT` or `DEEPTRACE_TIMEOUT` | `number` | 3000 | | Morgan request logger format | `APPIFY_MORGAN_FORMAT` | `string` | :method :url :status :: :response-time ms :: :res[deeptrace-id] | | Sentry's DSN | `APPIFY_SENTRY_DSN` or `SENTRY_DSN` | `string` | `null` | | HTTP Server binding socket | `APPIFY_SERVER_BINDING_SOCKET` | `string` | `undefined` | | HTTP Server binding IP | `APPIFY_SERVER_BINDING_IP` | `string` | 0.0.0.0 | | HTTP Server binding port | `APPIFY_SERVER_BINDING_PORT` | `number` | 3000 | | Use HTTP `X-Forwarded-For` IP as user IP | `APPIFY_SERVER_SPDY_X_FORWARDED_FOR` | `boolean` | `true` | | Send HTTP data as plain text | `APPIFY_SERVER_SPDY_PLAIN` | `boolean` | `true` | | Enable SSL | `APPIFY_SERVER_SPDY_SSL` | `boolean` | `false` | | Path to SSL key | `APPIFY_SERVER_SSL_KEY` | `string` | `undefined` | | Path to SSL cert | `APPIFY_SERVER_SSL_CERT` | `string` | `undefined` |