expresser
Version:
A ready-to-use platform for Node.js web apps, built on top of Express.
134 lines (79 loc) • 4.41 kB
Markdown
# Expresser
A Node.js platform with web, database, email, logging, twitter and firewall features, built on top of Express.
Official project page: http://expresser.codeplex.com
[](https://travis-ci.org/igoramadas/expresser)
### Why Expresser?
Even if Express itself does a good job as a web application framework, it can still be considered low level.
So the idea of Expresser is to aggregate common modules and utils into a single package, and make it even easier to
start your Node.js web app.
### How to configure
All settings for all modules are wrapped on the `settings.coffee` file. If you wish to customize any of
these settings, please create a `settings.json` file on the root of your app folder with the specific keys
and values. Detailed instructions are available on the top of the `settings.coffee` file.
You can also change settings directly on runtime, via the `settings` property of Expresser, for example:
require("expresser").settings.general.appTitle = "My App".
More info can be found at https://expresser.codeplex.com/wikipage?title=Settings
## Modules
Below you'll find important information about each of Expresser modules. Detailed documentation is extracted from
the source code and available under the `/docs/` folder.
### App
* Pre-configured Express server ready to run on most PaaS providers.
* Built-in support and automatic setup of New Relic (http://newrelic.com) agent.
More info at https://expresser.codeplex.com/wikipage?title=App
### Database
* Supports reading, updating and deleting documents on MongoDB databases.
* Automatic switching to a failover database in case the main one is down.
More info at https://expresser.codeplex.com/wikipage?title=Database
### Firewall
* Automatic protection against SQLi, CSS and LFI attacks.
* Automatic IP blacklisting.
* Works on HTTP and Socket connections.
More info at https://expresser.codeplex.com/wikipage?title=Firewall
### Imaging
* Wrapper for ImageMagick.
* Easy conversion between multiple image types.
More info at https://expresser.codeplex.com/wikipage?title=Imaging
### Logger
* Simple info, warn and error logging methods.
* Suppports logging to local files, Logentries (http://logentries.com) and Loggly (http://loggly.com).
More info at https://expresser.codeplex.com/wikipage?title=Logger
### Mail
* Supports sending emails via SMTP using optional authentication and SSL/TLS.
* Supports email templates and keywords.
* Automatic switching to a failover SMTP server in case the main one fails to send.
More info at https://expresser.codeplex.com/wikipage?title=Mail
### Sockets
* Wrapper for the Socket.IO module.
* Works even if your server does not support websockets.
More info at https://expresser.codeplex.com/wikipage?title=Sockets
### Twitter
* Supports updating status and reading direct messages from Twitter.
* The Twitter module is not fully functional yet!!!
More info at https://expresser.codeplex.com/wikipage?title=Twitter
### Utils
* General utilities and helper methods.
More info at https://expresser.codeplex.com/wikipage?title=Utils
## Running on PaaS
Deploying your Expresser based app to AppFog, Heroku, OpenShift and possibly any other PaaS is dead simple.
No need to configure anything - just leave the `Settings.app.paas` setting on, and it will automatically set
settings from environment variables.
## Common questions and answers
#### Where is this project hosted?
The official project page is at CodePlex: http://expresser.codeplex.com. But as we know there are lots of people
who prefer GitHub, there's a remote repo at GitHub as well: https://github.com/igoramadas/expresser.
#### How can I change specific settings without touching the `settings.coffee` file?
Create a `settings.json` file with the specific keys and values that you want to override. For example:
{
"general": {
"appTitle": "My App"
},
"app": {
"paas": false,
"port": 1234
}
}
You can also change settings programatically:
var expresser = require("expresser");
expresser.settings.general.appTitle = "MyApp";
#### I have a problem!
Can't find what you're looking for? Need help? Then post on the Issue Tracker: http://expresser.codeplex.com/workitem/list/basic