nodequiz
nodequiz copied to clipboard
A kickass Quiz app designed to be run inside an organization - users can register and take a quiz everyday. Also features a full-fledged admin interface for adding questions.
NodeQuiz
A kickass Quiz app built using NodeJS, Express 4 and MongoDB; designed to be run inside an organization, where users can register and take a quiz everyday. Also features a full-fledged admin interface for adding questions.
Features
- Fully built using the latest stable versions of Node.JS, Express (4.x) and MongoDB.
- NEW! LDAP authentication support.
- Beautiful responsive frontend using Bootstrap 3.x and jQuery, including skins.
- Standings/Rankings page that shows detailed organization-wide statistics, along with fancy graph charts built using Flot.
- Custom admin interface complete with image upload functionality (for questions) using DropzoneJS and detailed userbase statistics using DataTables.
- Uses the
swigtemplate engine instead of the defaultjade. (That's because I come from Django). - Well-designed responsive templates for all email communication, thanks to Antwort.
- Tons of interesting fraud counter-measures.
Deployment
Make sure the following packages are installed first.
Once these basic packages are installed, DEPLOYMENT TIME!
pm2 is the recommended process wrapper for deploying this app. It is a zero-downtime, automatic-clustering process manager that offers logging, hot-reloading, monitoring and a ton of awesome stuff. Install pm2 globally using the following command -
sudo npm install -g pm2
Once installed, simply execute the command -
pm2 start app.js -i x
where x is the maximum number of processor cores available to the app.
For a ridiculously speedy app, also setup nginx as a reverse proxy on top of the pm2 process. Refer the nginx.conf file in config/ for a highly optimized nginx deployment setup.
All other app-specific configuration is present in config/config.js.
Possible areas of improvement
- ~~There's a very small level of code smell - most of the routes are still in
app.js. Pull requests for cleanup are super-welcome.~~ [COMPLETED] - Templates are all plain and are not structured into base/inherited templates.
- Could probably use a Grunt or Gulp task runner script for continuous deployment.
Credits
All versions of the NodeQuiz icon were designed from the wonderful vector icon set from Brankic1979.