adds user frontend with login-, registration-, and webhook- features to your (express) application. Startingpoint for DIY api management

Usage no npm install needed!

<script type="module">
  import expressApiUserManagementSignup from '';



DEPRECATED by expressa

Middleware for quickly building login systems on top of apis/express apps. This module adds a user facade-backend with login / registration on top of that. Good startingpoint for DIY api management, processable thru webhooks, themable using custom js/css/jade templates.

WARNING: BETA, not production ready


login (basic theme)

logged in

form generation using jsonschema


npm install -g coffeescript 
npm install jade express@4.13.3
npm install express-api-user-management-signup


var app, cfg, express, http, port, usermanagement, webhookhost, webhookport;

express = require('express');
http = require('http');
usermanagement = require('express-api-user-management-signup');

app = express();
port = process.env.PORT || 3010;
webhookport = process.env.WEBHOOK_HOST || port;
webhookhost = process.env.WEBHOOK_HOST || '';

cfg = {
  webhook: {
    url: 'http://' + webhookhost + ':' + webhookport,
    requestdata: {
      headers: {
        'x-some-token': 'l1kj2k323'
  mongo: {
    host: 'localhost',
    port: 27017,
    name: 'foo'
  layout: {
    theme: __dirname + '/app/public.account',    // define your own 
    // theme: __dirname + '/app/public.basic',   // templates
    title: {
      brand: 'Projectname',
      welcome: 'Please login to your account'
    menu: {
      'Apidoc': {
        target: '_blank',
        url: '/api/v1/doc'
      '---': '---',
      'Contact': {
        target: '_blank',
        url: ''
    formurl: '/js/form.json'

app.set('port', port);
app.use(usermanagement(app, express, cfg));
http.createServer(app).listen(app.get('port'), function() {
  console.log('Express server listening on port ' + app.get('port'));


Define your own templates for easy integration with your js/css/html framework:

cp -R node_modules/express-api-user-management-signup/app/public.basic mytheme

and in the config define

  layout: {
    theme: __dirname + '/mytheme'


  • coffeescript yay!
  • New User Account Creation
  • Secure Password Reset via Email
  • Ability to Update / Delete Account
  • Session Tracking for Logged-In Users
  • Local Cookie Storage for Returning Users
  • Blowfish-based Scheme Password Encryption
  • end-user webhooks
  • optional internal webhooks for flexibilitystorage (to integrate with api proxy like apiaxle or emailgateway e.g.)
  • logging of db actions
  • apikey support + regeneration of apikey
  • works standalone and as express drop-in lib (the latter needs improvement eg. app.use)
  • flexible form using (optionally remote) jsonschema
  • optional google analytics by passing environment variable GOOGLE_ANALYTICS_TOKEN=LK-2342LK

Extend forms easily

By using jsonform, we can easily extend the form without having to fiddle with database code. Just have a look at :

HINT: you can change the 'formurl'-parameter of 'app.[js,coffee]' (or the json above) into a remote url in order to remotely manage the form


The following webhooks are fired whenever these things occur:

  • configuredhost + /add when user adds account
  • configuredhost + /update when user updates account
  • configuredhost + /update/pass when user changes password
  • configuredhost + /update/apikey when user regenerates apikey
  • configuredhost + /login when user logs in
  • configuredhost + /reset/pass when user resets password

Where configuredhost is defined by you in the config ('' e.g.) These webhooks can be reacted upon by other middle/software in order to send emails or update api proxy settings e.g.


  • tests
  • responsive ui (for smartphone etc)
  • url validation for webhook url in jsonschema
  • smaller fonts jsonform validation error tooltips (to match the layout)

Built with