festoon

0.0.4 • Public • Published

Festoon

travis badge

Festoon makes it easy to "decorate" Express--or other Node-based web server--apps with data, and makes integrating small-ish tabular data sets into your web apps a piece of cake. Here's a taste:

var Festoon = require('festoon');
 
var data = new Festoon({
  sources: {
    people: 'people.csv'
  }
});

What's happening here? We've created a Festoon instance and registered one named data source, people, which will load data from people.csv. Next, let's create an Express server and "decorate" the response object with that data:

var express = require('express');
var app = express();
 
app.get('/', data.decorate('people'), function(req, res) {
  return res.render('index.html');
});
 
app.listen(1337, function(error) {
  var addr = this.address();
  console.log('listening @ http://%s:%s', 
});

When express renders index.html, the underlying template engine will get an array of parsed rows from people.csv in the people key of its res.locals object.

So data.decorate() takes one or more data source names (which can be specified in a number of ways), and will populate the response locals with the corresponding data, loaded fresh at runtime. You describe your data sources declaratively, and Festoon will load them as needed.

Festoon also knows about placeholders in data source filenames. Say, for instance, that you have detailed information for each of your people in a directory structure like:

people/
  betty.json
  bobby.json
  ...

Then we can do this:

data.setSource('person', 'people/:person.json');
 
app.use('/people/:person', data.decorate('person'), function(req, res) {
  return res.render('person.html');
});

Behind the scenes, Festoon interpolates the person parameter of the request into each of the requested data source filenames, so:

URL: 'people/betty' -> {person: 'betty'} -> data: 'people/betty.json'

Festoon will also raise errors when either the interpolation variable (in this case, person) isn't available as a request URL or query parameter.

Readme

Keywords

Package Sidebar

Install

npm i festoon

Weekly Downloads

1

Version

0.0.4

License

CC0

Last publish

Collaborators

  • shawnbot