kazana-config

Kazana core module for configuration

Usage no npm install needed!

<script type="module">
  import kazanaConfig from 'https://cdn.skypack.dev/kazana-config';
</script>

README

kazana-config

Kazana core module for configuration

NPM version Dependency Status Build Status Coverage Status

Usage

Kazana apps can be configured in 4 ways

  1. config: {} setting in the app / plugin manifests

    module.exports = {
      name: 'myApp',
      version: '1.0.0',
      config: {
        kazana: {
          admin: {
            password: 'supersecret'
          }
        },
        myApp: {
          mySetting: 'value'
        }
      }
    }
    
  2. .kazanarc files, using the rc package.

    [kazana.admin]
      password = supersecret
    [myApp]
      mySetting = value
    
  3. Environment variables

    kazana_kazana__admin__password='supersecret' kazana_myApp__mySetting=value npm start
    
  4. 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

devDependency Status

npm test

Credit

Brought to you by eHealth Africa — good tech for hard places.

License

Apache-2.0