Enginemill
Enginemill is a Node.js web development framework. The goal is to codify some opinions about how to structure a Node.js system and provide tools to make the development of your systems easier and more fun.
- Bluebird for Promises.
- Lodash (Underscore) too.
- Filepath to work with the filesystem.
- Yargs to parse command line options.
- Moment to parse, validate, manipulate and display dates.
- Numeral for Number formatting and manipulation.
- An Object factory for composing mixins.
- Serially load plugins you define and kicks off your app only when they have all loaded.
- Comprehensive logging based on Bunyan.
- Message and pattern based communication with Oddcast.
- Promisified request wrapper for making HTTP requests.
- Supports CoffeeScript out of the box, which is nice for config and plugin initialization files.
On The Web
- Website: enginemill.org
- NPM
- Issues: GitHub
Built by @kixxauth
Examples:
Here is an example of booting up a new Express.js web application:
In ./bin/start-server.js
:
var enginemill = ; // Loads the filepath (https://github.com/kixxauth/filepath) module.var path = enginemillpath; var server = ; enginemill;
In './initializers/configs.coffee' (configs plugin):
enginemill = require 'enginemill'path = enginemill.path module.exports = (app) -> # app.environment is set with the --environment option, or the # NODE_ENV environment variable. app.configs.port = if app.environment is 'production' then 8080 else 3000 # Set the public path to '../public' app.configs.public_path = path.create(__dirname, '..', 'public')
In './initializers/middleware.coffee':
express = require 'express' module.exports = (app) -> app.API.httpApp = express() app.API.httpApp.use bodyParser.json() app.API.httpApp.use bodyParser.urlencoded({ extended: false }) app.API.httpApp.use cookieParser() app.API.httpApp.use express.static(app.configs.public_path.toString())
In './initializers/routes.coffee':
dashboard = require '../presenters/dashboard' module.exports = (app) -> app.API.httpApp.get '/', dashboard.get
In ./server.js
:
var http = ;var enginemill = ; // Loads Underscore/Lodash as 'U' symbol.var U = enginemillU; exports { var port = appconfigsport; // Set the port number in Express. apphttpApp; // Setup the server var server = http; server; server;}; exports { var addr = server; console; console;};
Run the server with node ./bin/start-server.js --environment production
;
Copyright and License
Copyright: (c) 2014 - 2016 by Kris Walker kris@kixx.name (http://www.kixx.name/)
Unless otherwise indicated, all source code is licensed under the MIT license. See MIT-LICENSE for details.