The mark of quality and trust for open data
Switch branches/tags
staging-2014-03-06_14-30-11 staging-2014-02-21_18-19-03 staging-2014-02-12_11-45-00 staging-2014-02-11_17-09-22 staging-2014-02-03_10-07-30 staging-2014-01-21_12-39-10 staging-2014-01-21_12-29-10 staging-2013-11-28_10-55-44 staging-2013-11-27_11-00-52 staging-2013-11-26_14-48-14 staging-2013-11-21_17-36-37 staging-2013-11-21_17-25-07 staging-2013-11-21_12-56-56 staging-2013-11-18_11-53-17 staging-2013-11-07_18-08-11 staging-2013-11-06_15-36-37 staging-2013-11-06_11-35-47 staging-2013-11-06_01-06-16 staging-2013-11-05_18-59-35 staging-2013-11-05_10-30-27 staging-2013-11-05_09-58-32 staging-2013-11-04_14-40-18 staging-2013-11-04_13-48-14 staging-2013-11-04_13-42-13 staging-2013-11-04_10-40-36 staging-2013-11-01_10-25-52 staging-2013-11-01_09-27-01 staging-2013-10-31_15-46-22 staging-2013-10-31_14-55-35 staging-2013-10-28_14-29-29 staging-2013-10-28_12-00-29 staging-2013-10-28_11-19-15 staging-2013-10-25_13-45-14 staging-2013-10-25_11-41-53 staging-2013-10-25_10-37-41 staging-2013-10-24_15-44-40 staging-2013-10-24_15-19-23 staging-2013-10-24_14-57-24 staging-2013-10-24_14-09-16 staging-2013-10-24_13-22-58 staging-2013-10-24_09-30-53 staging-2013-10-23_15-28-32 staging-2013-10-17_09-20-07 staging-2013-10-16_14-59-57 staging-2013-10-16_13-03-22 staging-2013-10-14_11-09-16 staging-2013-10-12_13-30-42 staging-2013-10-10_15-13-30 staging-2013-10-04_14-35-08 staging-2013-10-04_10-35-04 staging-2013-10-04_10-01-59 staging-2013-10-02_10-22-38 staging-2013-10-01_18-48-45 staging-2013-09-30_16-03-49 staging-2013-09-30_15-00-26 staging-2013-09-12_19-56-28 staging-2013-09-12_19-38-03 staging-2013-09-12_17-23-40 staging-2013-09-12_17-06-43 staging-2013-09-12_16-24-00 staging-2013-09-05_16-48-48 staging-2013-09-05_16-36-19 staging-2013-09-04_12-15-48 staging-2013-09-03_14-49-37 staging-2013-09-02_16-15-43 staging-2013-08-30_16-15-31 staging-2013-08-30_13-47-12 staging-2013-08-30_11-33-13 staging-2013-08-29_11-52-25 staging-2013-08-29_09-11-18 staging-2013-08-27_18-47-00 staging-2013-08-20_10-51-32 staging-2013-08-20_09-57-19 staging-2013-08-19_13-32-59 staging-2013-08-18_20-12-48 staging-2013-08-18_19-59-42 staging-2013-08-16_17-04-14 staging-2013-08-15_20-25-59 staging-2013-08-15_19-52-30 staging-2013-08-15_19-06-32 staging-2013-08-12_14-42-31 staging-2013-08-09_16-29-51 staging-2013-08-01_10-42-03 staging-2013-07-31_21-43-13 staging-2013-07-31_21-40-20 staging-2013-07-31_21-32-32 staging-2013-07-31_20-53-28 staging-2013-07-30_13-19-50 staging-2013-07-24_17-28-53 staging-2013-07-24_11-53-28 staging-2013-07-23_15-56-13 staging-2013-07-23_11-49-13 staging-2013-07-23_11-25-21 staging-2013-07-19_15-39-21 staging-2013-07-16_11-57-44 staging-2013-07-15_12-38-24 staging-2013-07-15_12-25-57 staging-2013-07-15_12-14-09 staging-2013-07-15_12-01-49 staging-2013-07-15_11-48-26
Nothing to show
Clone or download
olivierthereaux Merge pull request #1691 from ODIQueensland/staging
Fixes #1690. Added status call on api base url returning 404, but sti…
Latest commit d16b71f Sep 21, 2018
Failed to load latest commit information.
.github update PR template to remove auto-tag Sep 18, 2017
.tx Combine jurisdiction translation before push to Transifex Nov 12, 2015
app change message on check-url button for autocomplete Sep 3, 2018
bin Clean up after running setup tasks Apr 7, 2016
config change message on check-url button for autocomplete Sep 3, 2018
db make harvest option persist Aug 19, 2016
doc Improve README and docker instructions Jul 19, 2016
docker Rename ODC_REDIS_SERVER_URL env var to the more standard REDIS_URL Apr 12, 2017
features skip_invoke deprecated Aug 24, 2017
fixtures Merge no longer adds surveyor namespace Nov 12, 2015
lib Fixes #1690. Added status call on api base url returning 404, but sti… Aug 31, 2018
log added initial rails install Apr 22, 2013
public Rescue from NotAuthorised with a 403 Oct 3, 2014
script Add Cucumber Sep 12, 2014
spec rack-cors 1.0 returns *, not HTTP_ORIGIN Aug 24, 2017
surveys generated changes following most recent AU xml update. Jun 20, 2018
test added tests for status call failure. Aug 31, 2018
vendor Merge pull request #1344 from theodi/homepage-content-update Jan 14, 2016
.dockerignore Reduce context sent to Docker for image building Apr 7, 2016
.gitignore Merge branch 'staging' into remove-prototype-translations Aug 24, 2017
.powrc Add pow/rvm config May 12, 2014
.rspec Get surveyor controller spec working again Oct 19, 2015
.ruby-version Update to ruby 2.2.7 Jul 14, 2017
.travis.yml Merge branch 'ruby227' into heroku Aug 24, 2017 Refactor .github to only GH relevant MD files Jul 28, 2017 Refactor .github to only GH relevant MD files Jul 28, 2017
Dockerfile Change Ruby Version in Dockerfile Aug 28, 2018
Gemfile use puma instead of thin Nov 7, 2017
Gemfile.lock Bump uglifier from 3.2.0 to 4.1.1 Dec 30, 2017
Guardfile removed spring guard Nov 6, 2013 Update Jun 14, 2013 Add license details Jul 21, 2014
Procfile use puma instead of thin Nov 7, 2017 Include roadmap link May 2, 2017
Rakefile Run tests before specs Oct 16, 2015
Vagrantfile New, much cleaner infrastructure Sep 1, 2015 added initial rails install Apr 22, 2013
docker-compose.yml make sure containers are linked Jul 7, 2016
env.example Rename hostname envar in documentation Jul 28, 2015

Build Status Dependency Status Coverage Status Code Climate License Badges

Open Data Certificates

This source code is for the ODI's Open Data Certificates app at The online assessment tool allows publishers to assess how good their open data release is across technical, social, legal and other areas. When published, a certificate (which can be Bronze, Silver, Gold or Platinum) shows data reusers how much they can trust and rely on the dataset


This code is open source under the MIT license. See file for full details.

Summary of features

Open Data Certificate is an online assessment tool for open data releases powered by Rails.

Follow the public feature roadmap for Open Data Certificates



ruby version 2.1.8

Environment variables

Some extra environment variables are required for the certificates site; these can be set in a .env file in the root of the project. The docker setup will create this file if it doesn't already exist.


# A hostname to create links in emails

# Redis server URL


The following extra are needed in production or for optional features:

# Rackspace credentials for saving certificate dumps

# Juvia details to allow commenting

# Sending error reports to airbrake

# Enable footnotes for debugging info

Specific Development Notes

Development: Running the full application locally

With Docker

The simplest way to get a certificates app up and running is under Docker.

  1. Install Docker Toolbox
  • Set up a Docker host with docker-machine start default or run the Kitematic GUI.
  • Make sure your terminal can talk to Docker
    • either by opening the 'Docker Quikstart Terminal'
    • or adding eval $(docker-machine env default) to your .bashrc
  1. Run bin/dockerize
  2. Make tea
  3. Everything should be set up and be open in your browser.
  4. Run docker-compose run web bin/setup
  1. Install docker-engine, docker-compose, and then docker-machine
  2. Set up a Docker host with docker-machine create -d virtualbox default
  3. Run bin/dockerize
  4. Make tea
  5. Everything should be ready and the script will try to open the browser
  • If it doesn't, hit ctrl-c and check all 4 containers are up with docker-compose ps
  • Then point your browser to the address:port for the opendatacertificate_web_1 container (likely
  1. Run docker-compose run web bin/setup
Without Docker
  1. Install Ruby 2.1.8, and bundler.
  2. Install and run Redis and MySQL servers.
  3. Run bin/setup (generates .env file)
  4. edit the default config/database.yml #TODO with what?
  5. Run bundle exec rails s

If you're not using docker, ignore the docker-compose run web prefix on the commands below.

Known issues

eventmachine rubyracer

Application Configuration

Default Admin User

Both of the above methods should set up your local app with a default admin user:

  • Username:
  • Password: testtest

By default, only the UK survey is built in development, as building more can take a while.

To build a specific country survey (AU used as an example):

docker-compose run web bundle exec rake surveyor:build_changed_survey FILE=surveys/generated/surveyor/odc_questionnaire.AU.rb

To build a few surveys:

docker-compose run web bundle exec rake surveyor:build_changed_surveys LIMIT=5

To build all the other surveys (remember, this can take a while):

docker-compose run web bundle exec rake surveyor:build_changed_surveys

For information on how to translate and localise surveys, see below.


To run tests:

docker-compose run web bundle exec rake test

You can also run tests continuously whenever a file is changed:

docker-compose run web bundle exec guard


Certificates can be created and updated using a JSON API. See the API documentation for details.

Application Functionality

Admin functions

To mark a user as being an admin use the rails console to set the admin field to true. The easiest way to find the ID is to look on the URL of their account page.

User.find(<id>).update_attributes(admin: true)

Admins are able to block a dataset from displaying on the public /datasets page by visiting the dataset and toggling the visibility at the top of the page.

Removed datasets are listed at /datasets/admin (only accessible by admin users).


The survey attempts to fetch answers from the documentation URL and fill them into the questionnaire. These answers are marked as autocompleted.

Surveys can be autocompleted if the pages machine-readable metadata in the following formats:

  • DCAT
  • Datapackage
  • CKAN

Some examples of URLS that can be autocompleted:

Additional documentation

App approach document

The original prototype has been moved to /prototype.