hoodiehq / hoodie-server

:dog: Hapi plugin for Hoodie’s server core module
Apache License 2.0
243 stars 47 forks source link

hoodie-server

Hapi plugin for Hoodie’s server core module

Build Status Coverage Status Dependency Status devDependency Status

@hoodie/server integrates Hoodie’s server core modules:

Example

var Hapi = require('hapi')
var hoodie = require('@hoodie/server')
var PouchDB = require('pouchdb-core').plugin(require('pouchdb-mapreduce')).plugin(require('pouchdb-adapter-memory'))

var server = new Hapi.Server()
server.connection({
  host: 'localhost',
  port: 8000
})

server.register({
  register: hoodie,
  options: { // pass options here
    PouchDB: PouchDB,
    paths: {
      public: 'dist'
    }
  }
}, function (error) {
  if (error) {
    throw error
  }

  server.start(function (error) {
    if (error) {
      throw error
    }

    console.log(('Server running at:', server.info.uri))
  })
})

Usage

option default description
adminPassword - Password to login with admin account
paths.data '.hoodie' Data path
paths.public 'public' Public path
PouchDB PouchDB constructor. See also custom PouchDB builds.
account {} Hoodie Account Server options. account.admins are generated based on adminPassword option above. account.usersDb is hardcoded to _users at this point. account.secret is stored in hoodie-store/hoodie and will be generated if it does not yet exist.
store {} Hoodie Store Server options. store.couchdb, store.PouchDB are set based on the PouchDB option above. store.hooks.onPreAuth is set to bind user authentication for Hoodie Account to Hoodie Store.

Testing

Local setup

git clone https://github.com/hoodiehq/hoodie-server.git
cd hoodie-server
npm install

Run all tests

npm test

Contributing

Have a look at the Hoodie project's contribution guidelines. If you want to hang out you can join our Hoodie Community Chat.

License

Apache 2.0