@mantris/appify
Version:
Very opinionated Node.js API boilerplate as module.
88 lines (69 loc) • 4.97 kB
Markdown
```
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"
```
[](https://lbesson.mit-license.org/)
[](https://standardjs.com)





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` |