@engagementlab/el-bootstrapper
v0.1.4-b
Published
The Engagement Lab's library for web server/keystonejs CMS instance initialization.
Downloads
5
Maintainers
Readme
EL-Bootstrapper
The Engagement Lab's library for web server API/KeystoneJS CMS instance initialization.
- BYO expressjs instance!
- Uses Auth0 for login to KeystoneJS via Google connection. You will need to create an Auth0 app.
- Unlike the default KeystoneJS 'User' model, ours has no password field. Just add users' gmail address, and they can login via Auth0.
- Keystone admin panel is still entered via /keystone, but you're directed to /cms by default after login.
- Replaces our deprecated el-web-sdk.
Install
npm i --save @engagement-lab/el-bootstrapper
Environment
Node 10.14.0+ supported. Should work as low as 8.11.4.
You must specify the following in your .env (reminder to never commit this):
DEV_EMAIL=[email to use for automatic keystone login on NODE_ENV=development]
COOKIE_SECRET=[random hash for keystone cookie]
(obtain following at https://manage.auth0.com/)
AUTH0_CLIENT_ID=[your id]
AUTH0_DOMAIN=[your domain].auth0.com
AUTH0_CLIENT_SECRET=[your secret]
AUTH0_CALLBACK_URL=[usually http://localhost:3000/callback]
And optionally:
PORT=[a port to run on, defaults to 3000]
You will also need a config.json in your app root dir:
{
"name": "Name of website",
"database": "mongo-database-name",
"adminPath": "cms"
}
Usage
In your Node app main file (e.g. app.js, using dotenv in this example):
// Load .env vars
if(process.env.NODE_ENV !== 'test')
require('dotenv').load();
const bootstrap = require('@engagementlab/el-bootstrapper'),
express = require('express');
let app = express();
bootstrap.start(
// Path to config
'./config.json',
// Express
app,
// The root of this app on disk, needed for keystonejs
__dirname + '/',
// Any additional config vars you want for keystonejs instance
// See: https://keystonejs.com/documentation/configuration/
{
'name': 'Name of website CMS'
},
() => {
// any logic to run after app is mounted
// you need at least:
app.listen(process.env.PORT);
}
);