Ruby on Rails application for building unique quizzes with admin/user interface, e-commerce, and certification. The application was built by using Test Driven Development, GitHub Flow, and Agile Planning.
IMPORTANT: The code in this repository is legacy (from 2015) and is no longer maintained.
- Sign up and sign in for students via 3rd party - GitHub.
- Forgetten password and 'Remember me'.
- Admin area with multiple actor roles - Instructor, Teaching Assistant.
- Possibility of paid Signature track and credit card payment via Stripe.
- Downloadable PDF and shareable certificate on LinkedIn.
- File upload to Amazon S3.
- Quiz questions and answers can be written in Markdown.
- Syntax highlighting support for markdown code blocks.
- Continuous Integration - Builds on Travis CI and CircleCI.
- Continuous Deployment - from CircleCI to Heroku.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
You need to be able to setup developer account with 3rd party services:
- GitHub (Required only for student track)
- AWS (Optional)
- Stripe (Required only for student track)
In order to run specs, you will need to install PhantomJS. Homebrew installation of PhantomJS:
brew update
brew install phantomjs
And same way for PostgreSQL.
I originally used Ruby 2.1.5 and version was upgraded to 2.3.6, but any version before 2.4 should work without issues.
git clone git@github.com:tomtomecek/quizzer.git && cd quizzer
bundle install
bundle exec rake db:create db:schema:load
figaro install
If you want to seed some data.
bundle exec rake db:seed
bundle exec rspec spec
I also used zeus to enhance local development.
Project is continuously deployed via CircleCI to Heroku, when all tests pass on master branch.
See the setup of config.yml - here.
- Ruby on Rails - The web framework used
- PostgreSQL - Database used
- Wicked PDF - PDF Generation with wkhtmltopdf
- Omniauth GitHub - Student Sign up/in provider
- Stripe - Credit card payments processing
- LinkedIn - Certificates uploaded to
- Amazon S3 - Storage for course files
- Mailgun - Email provider
- Sidekiq - For background jobs
- Parsley.js - Frontend form validation
- Sentry - Production error monitoring
- Font Awesome - Icons used
- jQuery - Javascript framework used
- Twitter Bootstrap - HTML/CSS framework used
- RSpec - BDD test framework used
- Capybara - Acceptance test framework used
- Tomas Tomecek - tomtomecek
- Huge thanks to Chris Lee and Kevin Wang - for inspiration, mentoring and knowledge
- Thanks to Brandon Conway - for development advice and hunt on some bugs
- Quiz inspiration came from Vienna.rb