text: var express         = require("express")
  var favicon     = require('static-favicon');
  var logger      = require('morgan');
  var cookieParser = require('cookie-parser');
  var bodyParser  = require('body-parser');
  var path        = require('path');
  
  var routes = require('../routes/index');
  var recipe = require('../routes/recipe');
  
  var models          = require("../models/")
  
  module.exports = function(app) {
      // view engine setup
      app.set('views', path.join(__dirname, '../views'));
      app.set('view engine', 'jade');
  
      app.use(favicon());
      app.use(logger('dev'));
      app.use(bodyParser.json());
      app.use(bodyParser.urlencoded());
      app.use(cookieParser());
      app.use(express.static(path.join(__dirname, '../public')));
      app.use(express.static(path.join(__dirname, '../dist')));
  
  
      // Initialize our models.
      app.use(function(req, res, next) {
          models(function(err, db) {
              if (err) return next(err);
  
              req.models  = db.models;
              req.db      = db;
  
              return next();
          });
      });
  
      // Route definition
      app.use('/', routes);
      app.use('/recipe', recipe);
  
      /// catch 404 and forward to error handler
      app.use(function(req, res, next) {
          var err = new Error('Not Found');
          err.status = 404;
          next(err);
      });
  
      /// error handlers
      // development error handler
      // will print stacktrace
      if (app.get('env') === 'development') {
          app.use(function(err, req, res, next) {
              res.status(err.status || 500);
              res.render('error', {
                  message: err.message,
                  error: err
              });
          });
      }
  
      // production error handler
      // no stacktraces leaked to user
      app.use(function(err, req, res, next) {
          res.status(err.status || 500);
          res.render('error', {
              message: err.message,
              error: {}
          });
      });
  };
  