/
app.js
71 lines (59 loc) · 1.98 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// dependencies
var http = require('http');
var express = require('express');
var mongoose = require('mongoose');
var redis = require('redis');
var session = require('express-session');
var RedisStore = require('connect-redis')(session);
var cookieParser = require('cookie-parser');
var hbs = require('hbs');
var passport = require('passport');
var socketio = require('socket.io')();
var app = express();
// config and setup helpers
var helpers = require('./helpers')();
var config = require('./config');
var setup = require('./setup');
// pubsub
var rpc = setup.pubsub(redis, config);
// setup session store
var sessionStore = setup.sessions(RedisStore, session, config);
// setup application
setup.db(mongoose, config);
setup.registerPartials('./views/partials/', hbs);
setup.registerHelpers(helpers.handlebars, hbs);
// configure express
setup.configureExpress({
express: express,
passport: passport,
handlebars: hbs,
session: session,
store: sessionStore,
cookieParser: cookieParser,
dir: __dirname
}, app, config);
// http and socket.io server(s)
var server = http.createServer(app);
var io = socketio.attach(server);
// configure socket.io
setup.configureSockets(io, config, {
cookieParser: cookieParser,
sessionStore: sessionStore
});
// app dependencies (app specific)
var ipc = require('./modules/ipc')(0);
var mailer = require('./modules/mailer')(config);
var models = require('./models')(mongoose, helpers.validators);
var services = require('./services')(models, helpers, ipc, rpc);
var handlers = require('./handlers')(passport, services, config);
var authentication = require('./modules/authentication')(models, mailer);
// pubsub
require('./modules/pubsub')(rpc, ipc);
// app specific modules
require('./modules/sockets')(io, ipc);
require('./modules/passport')(passport, config, authentication, models);
require('./routes')(app, express, handlers, config);
// express error handling
setup.handleExpressError(app);
// run application
setup.run(server, config);