Impress
Impressive totalitarian style web application framework for node.js. All decisions are made. Ready for applied development.
Installation
$ npm install impress
Features
- url routing based on file system
- can hosts multiple sites or applications on one server
- serving multiple ports, network interfaces, hosts and protocols
- soft configuration changes with zero downtime
- simple server-side templating
- caching server-side executable JavaScript and templates in memory
- folder monitoring for server-side executable JavaScript changes and template changes
- buil-in authentication and user groups
- sessions and cookies (memory state or persistent sessions with MongoDB)
- template personalization for user groups
- access modifiers for each folder in access.js files
- simple way for json-based web services development
- serving static files with content type and streaming for media files
- implemented SSE (Server-Sent Events) with channels and milticast
- multiple cluster instantiation strategies:
- single instance (one process, no master and workers)
- instance specialization (multiple processes, one master and different workers for each server)
- multiple instances (multiple processes, one master and identical workers with no sticky)
- ip sticky (multiple processes, one master and workers with serving sticky by IP)
- reverse-proxy (routing request to external HTTP server with url-rewriting)
- flexible configuration in json file
- simple logging web requests
- connection drivers for MongoDB and MySQL
- nodemailer as a plugin for email sending
Example
server.js:
require('impress');
impress.init(function() {
});
Configuration
- Copy project template from examples into your project folder
- Edit config.js file in project folder
- If you want to store persistent sessions in MongoDB, you need to run setup.js
- Run command: node server.js
Handler examples and file system url mapping
- Template example
Location: http://localhost
Base template: /sites/localhost/html.template
- Override included "left.template"
Location: http://localhost/override
Overriden template: /sites/localhost/override/left.template
Base template: /sites/localhost/html.template
Handler: /sites/localhost/request.js
- JSON api method example
Location: http://localhost/api/examples/methodName.json
Handler: /sites/localhost/api/examples/methodName.json/get.js
- Start anonymous session
Location: http://localhost/api/auth/anonymousSession.json
Handler: /sites/localhost/api/auth/anonymousSession.json/get.js
- POST request handler
Location: POST http://localhost/api/auth/regvalidation.json
Handler: /sites/localhost/api/auth/regvalidation.json/post.js
- MongoDB access example
Location: http://localhost/api/examples/getUsers.json
Handler: /sites/localhost/api/examples/getUsers.json/get.js
Contributors
- Timur Shemsedinov (marcusaurelius)
- Sergey Andriyaschenko (tblasv)
License
Dual licensed under the MIT or RUMI licenses.
Copyright (c) 2012-2013 MetaSystems <timur.shemsedinov@gmail.com>
License: RUMI
Do you know what you are?
You are a manuscript of a divine letter.
You are a mirror reflecting a noble face.
This universe is not outside of you.
Look inside yourself;
everything that you want,
you are already that.
Jalal ad-Din Muhammad Rumi
"Hush, Don't Say Anything to God: Passionate Poems of Rumi"