openpeer-rolodex

Status: DEV

Usage no npm install needed!

<script type="module">
  import openpeerRolodex from 'https://cdn.skypack.dev/openpeer-rolodex';
</script>

README

Status: DEV

Rolodex for Open Peer

Having a distributed and secure communication system like Open Peer is quite useless if you have nobody to talk with.

This rolodex SDK supports the following:

  • Integration with passport for authentication with 120+ services.
  • Contact federation for any service with a contacts API (that we have a plugin for).
  • Q promise based AMD-compatible client API.
  • connect middleware to service client requests.
  • Contact information normalized to hCard properties.
  • Communication with services scheduled via kickq ( currently disabled due to kickq bug )
  • Contacts and service status cached in redis.
  • Easy horizontal round-robin scaling via shared-noting architecture (requires central redis).

Example

cd example
make install
# Configure services in `rolodex.config.json` (see 'Configuration' below)
make run

Usage

Install:

npm install openpeer-rolodex
# Provision a Redis database

When you first run your application, required dependencies for any configured service will be automatically installed. You can also install these manually:

cd ./lib/plugin/<service>
npm install

Integrate:

  • Server-side - See ./example/server.js.
  • Client-side - See ./example/ui/index.html and ./example/ui/app.js.

Configuration

For each service you want to integrate with you need to:

  1. Create an application on the service.
  2. Configure the service in rolodex.config.json.

The rolodex.config.json file must be structured as follows:

{
    "allow": {
        # Optional for cross-domain access.
        "hosts": [
            "localhost"
        ]
    },
    "db": {
        "redis": {
            "host": "<redis host>",
            "port": <redis port>,
            # The following are defaults and may be omitted.
            "password": "",
            "prefix": "rolodex:"
        }
    },
    "routes": {
        # The following are defaults and may be omitted.
        client: "/.openpeer-rolodex/client",
        auth: "/.openpeer-rolodex/auth",
        authCallback: "/.openpeer-rolodex/callback",
        logout: "/.openpeer-rolodex/logout",
        refetch: "/.openpeer-rolodex/refetch",
        services: "/.openpeer-rolodex/services",
        contacts: "/.openpeer-rolodex/contacts"
    },
    "services": [
        // One or more of the service config objects below.
    ]
}

GitHub

Create application here https://github.com/settings/applications with callback URL http://localhost:8080/.openpeer-rolodex/callback/github.

{
    "name": "github",
    "passport": {
        "clientID": "<Client ID>",
        "clientSecret": "<Client Secret>"
    }
}

Twitter

Create application here https://dev.twitter.com/apps with callback URL http://127.0.0.1:8080/.openpeer-rolodex/callback/twitter.

{
    "name": "twitter",
    "passport": {
        "consumerKey": "<Consumer key>",
        "consumerSecret": "<Consumer secret>"
    }
}

LinkedIn

Create application here https://www.linkedin.com/secure/developer

{
    "name": "linkedin",
    "passport": {
        "apiKey": "<API Key>",
        "secretKey": "<Secret Key>"
    }
}

Facebook

Create application here https://developers.facebook.com/apps

{
    "name": "facebook",
    "passport": {
        "appID": "<App ID>",
        "appSecret": "<App Secret>"
    }
}

License

BSD-2-Clause