kazana-config
Kazana core module for configuration
Usage
Kazana apps can be configured in 4 ways
-
config: {}
setting in the app / plugin manifests
module.exports = {
name: 'myApp',
version: '1.0.0',
config: {
kazana: {
admin: {
password: 'supersecret'
}
},
myApp: {
mySetting: 'value'
}
}
}
-
.kazanarc
files, using the rc package.
[kazana.admin]
password = supersecret
[myApp]
mySetting = value
-
Environment variables
kazana_kazana__admin__password='supersecret' kazana_myApp__mySetting=value npm start
-
command line arguments
npm start -- --kazana.admin.password='supersecret'
See https://www.npmjs.com/package/rc#standards for more details on how
configuration is retrieved, and it what order.
The settings become available as server.settings.app.<setting path>
within
the app and the plugins, for example server.settings.app.kazana.admin.password
or server.settings.app.config.myApp.mySetting
Kazana Settings
Setting Path | Default / Example |
---|
kazana.port
| 5000 |
kazana.log.level
| warn |
kazana.admin.username
Database admin username
| kazana |
kazana.admin.password
Database admin password
| secret |
kazana.backend.name
When undefined, defaults to pouchdb-server's built-in "leveldown". Can be set to "couchdb" or any levelup storage back-ends: https://github.com/Level/levelup/wiki/Modules#storage-back-ends
| -no default- |
kazana.backend.port
| 4999 |
kazana.backend.location
Location option as it gets passed to levelup https://github.com/Level/levelup#leveluplocation-options-callback
If backend.name="couchdb", set the couchdb url without credententials, e.g. "https://my.couch.com"
| ./.db |
kazana.backend.log.file
Does not apply if backend.name="couchdb"
| ./.db/pouch.log |
kazana.backend.log.level
Does not apply if backend.name="couchdb"
| info |
kazana.backend.config.file
Does not apply if backend.name="couchdb"
| ./.db/config.json |
kazana.backend.timeout
Time to connect database in milliseconds
| 30000 |
kazana.db.rawData
Name of database containing submitted raw data
| kazana-raw-data |
kazana.db.integratedData
Name of database containing integrated data
| kazana-raw-data |
kazana.db.options
Database ajax options, as passed to the PouchDB constructor.
| { timeout: 10000 } |
kazana.email.service
Nodemailer Email Service
| gmail |
kazana.email.auth.username
Nodemailer Email Service Username
| e.g. joe@example.com |
kazana.email.auth.password
Nodemailer Email Service Password
| e.g. secret |
Local setup and Testing
git clone git@github.com:eHealthAfrica/kazana-config.git
cd kazana-config
npm install
npm test
Test
npm test
Credit
Brought to you by eHealth Africa
— good tech for hard places.
License
Apache-2.0