Admin GUI addon for mongoose, jugglingdb, or just as a form generator


Bootstraped Admin GUI addon for Mongoose, JugglingDB, or just as a form generator. Originally forked from mongoose-admin.

var express = require('express'),
    app = express();
require('formage').init(app, express, models]);

Look at the \example directory.

// Site-wide options, and their default values 
require('formage').init(app, express, models, {
    title: 'Admin',
    root: '/admin',
    default_section: 'main',
    username: 'admin',
    password: 'admin',
    admin_users_gui: true
var model = new mongoose.model('songs', schema);
// external files specific to this model 
model.header_lines = [
   '<script src="/js/songs.js"></script>',
   '<style href="/css/songs.css"></style>'
model.formage = {
    // one-document models 
    is_single: true,
    // labels 
    label: 'My Songs',
    singular: 'Song',
    filters: ['artist', 'year'],
    // additional actions on this model 
    actions: [
          id: 'release',
          label: 'Release',
          funcfunction (useridscallback) {
             console.log('You just released songs ' + ids);
    // list of fields to be displayed by formage for this model 
    list: ['number', 'title', 'album', 'artist', 'year'],
    // order documents, save order in this field (type: Number) 
    sortable: 'order',
    // list of order fields 
    order_by: ['-year', 'album', 'number'],
    // list of fields that must be populated 
    // (see 
    list_populate: ['album'],
    // list of fields on which full-text search is available 
    search: ['title', 'album', 'artist']

Formage comes with the following built-in fields, but custom fields can be written if needed.

You can pass options to the underlying fields and widgets:

var schema = new mongoose.Schema({
    artist: { type: String, label: 'Who made it?' },
    location: { type: Schema.Types.GeoPoint, widget_options: { lang: 'nl' }}

(The map widget lang setting is a two-letter ISO 639-1 code.)