GradeCraft is a gameful learning management system, intended to help motivate students to be more engaged in their own learning.
Clone or download
ebarroso7 Merge pull request #4189 from UM-USElab/change-analytics-view
Changed Analytics link in staff nav to go to assignments analytics instead of student analytics
Latest commit 183113f Jan 17, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Update Mar 21, 2017
app Merge pull request #4189 from UM-USElab/change-analytics-view Jan 17, 2019
bin Run app:update, add bootsnap Aug 2, 2018
config forgot to change local test emails back to false Jan 7, 2019
coverage/assets/0.10.0 updated gitignore Jul 21, 2015
db Updating this branch to master before merging PR Jan 15, 2019
doc Move public images to asset pipeline Aug 2, 2018
lib Also send log message for job to Rollbar Dec 20, 2018
log Initial rails install Nov 9, 2011
make Create a bootstrapping `Makefile`. Aug 22, 2013
public Move public images to asset pipeline Aug 2, 2018
script And Mar 2, 2016
spec Updating this branch to master before merging PR Jan 15, 2019
test/mailers/previews adding in work from shameeks notification branch Nov 9, 2018
vendor/assets Proxima Nova license & other fun things 🥟 Aug 21, 2018
.autotest Switch from single to double quotes Feb 25, 2016
.codeclimate.yml Ignore breadcrumb_trail Feb 15, 2018
.csslintrc Code climate CLI Dec 13, 2015
.env.sample Add recaptcha to trial creation form Mar 26, 2018
.eslintrc Code climate CLI Dec 13, 2015
.gitconfig Updates to student dashboard and submission process Jul 16, 2013
.gitignore WORK IN PROGRESS, added some tests, changed some models Nov 9, 2018
.rspec Require spec_helper instead of base_spec_helper Oct 27, 2015
.rubocop.yml Add TargetRailsVersion Aug 7, 2018
Dockerfile Update Bundler, various gems Oct 29, 2018
Gemfile update scrypt from 3.0.5 to 3.0.6 to pass bundle install Jan 8, 2019
Gemfile.lock other gem updates Jan 8, 2019
LICENSE Added license Nov 1, 2012
Procfile Remove deprecated argument Jun 5, 2018 Update Jan 11, 2019
Rakefile Set persist true on scheduled job Jan 26, 2018 Update Aug 9, 2018
coffeelint.json coffescript cleanup Feb 7, 2017 Switch from single to double quotes Feb 25, 2016
root refactored grade_status concern spec Apr 4, 2017 Remove references to old config files Oct 18, 2016

Gradecraft is a gameful learning management system.

Codeship Status for UM-USElab/gradecraft-development

Test Coverage

Code Climate

Current features:

  • Badges
  • Teams (course-long memberships)
  • Groups (single-assignment memberships)
  • Assignments
  • Assignment Submissions
  • Assignment Unlocks
  • Student Dashboard
  • Interactive Grade Predictor
  • Interactive Course Timeline
  • Grading Rubrics
  • Export students and final grades
  • User analytics
  • Team analytics
  • Learning analytics suite
  • Custom, multi-component leveling system
  • Assignment stats
  • Student-logged assignment scoring
  • Multipliers (students decide assignment weight)


  • Ruby 2.5.3
  • PostgreSQL
  • MongoDB
  • Redis

Installation Notes for running locally

  1. Clone the repository
# clone to current directory; change dir
git clone
cd gradecraft-development
  1. Copy configuration files
# Note: ensure that you are in the newly cloned /gradecraft-development dir
cp config/database.yml.sample config/database.yml
cp config/mongoid.yml.sample config/mongoid.yml
cp .env.sample .env

# obtain and replace required credentials for .env (AWS, etc.)

# comment out ALL SAML and IDP-related lines
  1. Install Homebrew (Optional: brew update)

  2. Install a Ruby version manager of your choice and set current version to project version (Steps below pertain to rbenv)

brew install rbenv

# run command and follow instructions, will likely be the next step where you edit ~/.bash_profile
rbenv init

# make rbenv start up with terminal
edit ~/.bash_profile and add eval "$(rbenv init -)"

# optional (rbenv doctor script to check installation)
curl -fsSL | bash

# install and set the current version
rbenv install 2.5.3 (or whatever version Gradecraft is on)
rbenv local 2.5.3 (or rbenv global 2.5.3 if preferred)

# Restart terminal for changes to fully take into effect and ensure that the command rbenv works
  1. Install databases
brew install mongodb
brew install redis
brew install postgresql
  1. Ensure access to /data/db write directory for MongodDB
# create the directory, if it does not exist
sudo mkdir -p /data/db
sudo chown -R {user} /data/db (replace user; can ls -l to determine value)

# (optional) mongod command should bring up mongodb; close with ctrl+c before proceeding to step 5
  1. Install Bundler
# install Bundler version specified in Gemfile.lock to avoid conflicts
gem install bundler -v 1.17.1
  1. Install project dependencies
bundle (or bundle install)
  1. Start Postgres database and ensure it is running on port 5432 (Optional: Download and run with for Mac OS)

  2. Create and populate databases with sample data

bundle exec rails db:create

# optional
bundle exec rails db:sample
  1. Done! Run foreman start to begin

Additional Notes

  • Don't sudo gem install, as it will install gems in a way that does not work properly with rbenv. If using rbenv as the version manager, you may need to ensure that proper read/write permissions are granted for /Users/{user}/.rbenv

  • See db/samples.rb for dev usernames and passwords

Testing Emails Locally

  1. gem install mailcatcher
  2. Run mailcatcher in terminal
  3. Visit Emails are routed through to the web interface.

Modify action_mailer config settings in development.rb if needed

Linting code

Note: Both rubocop and coffeelint are installed directly on your machine, as they are not required for development, and thus are not specified within the gemfile or node package.

To lint ruby:

Install rubocop:

gem install rubocop


$ rubocop [path/to/file.rb]

To lint coffeescript:

Install coffeelint:

npm install -g coffeelint

to lint all files in javascripts/

rake lint:js

to lint a directory:

coffeelint -f coffeelint.json path/to/directory

to lint a single file:

coffeelint -f coffeelint.json path/to/

To lint javascript:

Install jslint:

npm install -g eslint

to lint the javacripts directory:

eslint ./app/assets/javascripts --ext .js

Running specs

To run all of the spec examples, you can run the following (this is also the default rake task):

bundle exec rails spec

To run all of the spec examples with code coverage, you can run the following:

bundle exec rails spec:coverage


  1. Clone the repository git clone
  2. Create a feature branch git checkout -b my-awesome-feature
  3. Code!
  4. Commit your changes (small commits please)
  5. Push your new branch git push origin my-awesome-feature
  6. Create a pull request hub pull-request -b um-uselab:master -h um-uselab:my-awesome-feature