Need help with opendatasurvey?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

133 Stars 93 Forks Other 2.4K Commits 81 Opened issues


The Open Data Survey application

Services available


Need anything else?

Contributors list

Open Data Census


Open Data Census is a web application that supports a submission and reviews workflow to collect information on the state of open data.

Some presentation of data is supported, along with partitioning results by year. The code base supports multiple censuses in a multi-tenant configuration, where each tenant runs a census from a subdomain.

Tenant administrators can customize parts of the app, from look and feel to key texts on various views.

Demo Site

If you want to check out what an Open Data Census site looks like we have a demo site running at:



Getting started

Open Data Census is a Node.js app, running Express v4 and Postgres 9.4 for the database.

Get a local server setup with the following steps:

NOTE: If you need to prefix your commands in your local environment with

, then do that.
  1. Install Postgres 9.4 on your machine.
  2. Setup to appropriate credentials on Google and Facebook so they are OAuth providers for your app.
    • For Google: follow these steps
      • The callBack url for Google+ API is:
    • For Facebook: follow these steps
      • The callBack url for Facebook is:
  3. Ensure you are running the supported version of Node.js, which is declared in the 'engines' section of
  4. Create a database with
    createdb opendatacensus
  5. Add this line to your hosts file:
  6. Create a local directory called
    and move into it with
    cd opendatasurvey
  7. Clone the code with
    git clone .
  8. Install the dependencies with
    npm install
  9. Create a copy of
    file and name it
    changing any values as required.

Now we should be ready to run the server:

  1. Run the app with
    npm start
    (the server will be run on the 5000 port)
  2. Log in at
    with your admin account (the same that was setup on the settings.json file)
  3. Load registry and config data at
  4. Load the data for a specific site, e.g.:
  5. Visit the site:

Other things you can do:

  • Run the test suite with
    npm test
  • Check your code style with
    npm run lint
    using the eslint config

Configuration Sheets

Most of the site configuration is taken from config sheets in Google Sheets. You can use this registry sheet and its linked sheets as examples and clone them as necessary.

NOTE: Ensure your registry and all other config sheets have been published as CSV in Google Sheets (click File, Publish to the Web).


We run deployments on Heroku. The app should run anywhere that you can run Node.js and Postgres. The important thing to remember for deployments is that the

file you are using for local development is not available, and therefore you need to configure several settings via environment variables. The key settings you should ensure are set:

i18n For Templates and core code

When templates or strings in core code change, the translations have to be changed. Extract strings to the

file by running this command:
./node_modules/.bin/gulp pot

You will need the GNU gettext commands. See here for more information.

To update the existing .po files, run:

./node_modules/.bin/gulp update-po

To add a new language, create the directory

and create the translation files (*.po). Alternatively, you can copy the
directory to
and change existing files.

To update the translations cache, run:

./node_modules/.bin/gulp compile-po

i18n For Config

Any column can be internationalised by adding another column with

after it. For example, the
column can be translated to German by adding a column of
[email protected]
. Only languages which have template translations created for them are valid. The
setting in the config document can be used to restrict the number of locales available. The first locale in the list is the default locale.

Removing a user

A script is provided to remove users by provider id. Removing a user will update entries where the user is a submitter or reviewer (changing the user id to the anonymous user), then remove the user.

$ npm run anonymize_user -- 


to perform a dry run, which will print the user id, and entry ids which will be affected (where the user is either a submitter or reviewer).

Running Tests

createdb opendatacensus_test
npm test

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.