Comments.

Updated readme.
pull/2/head
Sahat Yalkabov 2014-01-06 19:31:30 -05:00
parent 9598f3119c
commit 32577b78be
2 changed files with 21 additions and 11 deletions

View File

@ -12,8 +12,9 @@ Features
-------- --------
- Local authentication using Email and Password - Local authentication using Email and Password
- OAuth2 authentication via Twitter, Facebook, Google or GitHub - OAuth2 authentication via Twitter, Facebook, Google or GitHub
- MVC Structure - MVC Code Structure
- Bootstrap 3 + Flat UI - Bootstrap 3 + Flat UI
- LESS stylesheets (auto-compiled)
- Contact Form - Contact Form
- Account Management - Account Management
- API Examples - API Examples

29
app.js
View File

@ -1,3 +1,6 @@
/**
* Module dependencies.
*/
var domain = require('domain'); var domain = require('domain');
var express = require('express'); var express = require('express');
var fs = require('fs'); var fs = require('fs');
@ -8,16 +11,23 @@ var mongoose = require('mongoose');
var passport = require('passport'); var passport = require('passport');
var cluster = require('cluster'); var cluster = require('cluster');
// Load controllers /**
* Controllers.
*/
var homeController = require('./controllers/home'); var homeController = require('./controllers/home');
var userController = require('./controllers/user'); var userController = require('./controllers/user');
var apiController = require('./controllers/api'); var apiController = require('./controllers/api');
var contactController = require('./controllers/contact'); var contactController = require('./controllers/contact');
// App Configuration (API Keys, Database URI) /**
* API keys and Passport configuration.
*/
var secrets = require('./config/secrets'); var secrets = require('./config/secrets');
var passportConf = require('./config/passport'); var passportConf = require('./config/passport');
/**
* Spawn worker processes.
*/
if (cluster.isMaster) { if (cluster.isMaster) {
var numCPUs = require('os').cpus().length; var numCPUs = require('os').cpus().length;
@ -25,7 +35,7 @@ if (cluster.isMaster) {
cluster.fork(); cluster.fork();
} }
cluster.on('disconnect', function(worker, code, signal) { cluster.on('disconnect', function(worker) {
console.error('worker ' + worker.process.pid + ' died'); console.error('worker ' + worker.process.pid + ' died');
cluster.fork(); cluster.fork();
}); });
@ -34,10 +44,11 @@ if (cluster.isMaster) {
mongoose.connect(secrets.db); mongoose.connect(secrets.db);
// Initialize express application
var app = express(); var app = express();
// Express Configuration /**
* Express configuration.
*/
app.set('port', process.env.PORT || 3000); app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views')); app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade'); app.set('view engine', 'jade');
@ -68,15 +79,15 @@ if (cluster.isMaster) {
res.render('500'); res.render('500');
}); });
// Login/Signup Routes /**
* Routes.
*/
app.get('/', homeController.index); app.get('/', homeController.index);
app.get('/login', userController.getLogin); app.get('/login', userController.getLogin);
app.post('/login', userController.postLogin); app.post('/login', userController.postLogin);
app.get('/logout', userController.logout); app.get('/logout', userController.logout);
app.get('/signup', userController.getSignup); app.get('/signup', userController.getSignup);
app.post('/signup', userController.postSignup); app.post('/signup', userController.postSignup);
// Primary Routes
app.get('/contact', contactController.getContact); app.get('/contact', contactController.getContact);
app.post('/contact', contactController.postContact); app.post('/contact', contactController.postContact);
app.get('/account', passportConf.isAuthenticated, userController.getAccount); app.get('/account', passportConf.isAuthenticated, userController.getAccount);
@ -94,8 +105,6 @@ if (cluster.isMaster) {
app.get('/api/nyt', apiController.getNewYorkTimes); app.get('/api/nyt', apiController.getNewYorkTimes);
app.get('/api/twitter', passportConf.isAuthenticated, apiController.getTwitter); app.get('/api/twitter', passportConf.isAuthenticated, apiController.getTwitter);
app.get('/api/aviary', apiController.getAviary); app.get('/api/aviary', apiController.getAviary);
// OAuth Routes
app.get('/auth/facebook', passport.authenticate('facebook', { scope: 'email' })); app.get('/auth/facebook', passport.authenticate('facebook', { scope: 'email' }));
app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/', failureRedirect: '/login' })); app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/', failureRedirect: '/login' }));
app.get('/auth/github', passport.authenticate('github')); app.get('/auth/github', passport.authenticate('github'));