Brand new project, create dirs "lib/modules", "lib/templates", "config" ## lib/modules/home/index.js : ```js exports.register = function (server, options, next) { server.route({ path: '/', method: 'GET', handler: function (request, reply) { reply.view('home', {title: 'Home Page'}); } }); next(); }; exports.register.attributes = { pkg: require('./package.json') }; ``` ## lib/modules/home/package.json : ```js { "name": "exampleHome", "version": "0.0.1" } ``` ## lib/templates/layout.html : ```html
Home Page!
``` ## config/manifest.json : ```js { "connections": [ { "port": 51871, "host": "localhost" } ], "plugins": { "visionary": { "engines": { "html": "handlebars" }, "path": "./lib/templates", "layout": true }, "exampleHome": null } } ``` ## initialize npm for project `npm init` ## install dependencies `npm install --save rejoice handlebars visionary` ## package.json for project ### add "start" to scripts: ```js "scripts": { "start": "node node_modules/rejoice/bin/rejoice -c config/manifest.json" } ``` ### add home module to dependencies: (There will be other dependencies, don't remove them - not listing them here for brevity) ```js "dependencies": { "exampleHome": "./lib/modules/home" } ``` Note: exampleHome is specifying the local directory that contains the plugin, if you do this you need to npm install each time you make changes to it. This could alternatively be a git repository for true modularization of sections, or an npm published module (private or public NPM, whatever makes sense) ## install local home module via npm `npm install` ## starting the server `npm start` Fire up http://localhost:51871 and see it in action