Skip to content


Repository files navigation


New Zealand Sign Language Dictionary

Aotearoa's official sign language

New Zealand Sign Language (NZSL) is an official language of Aotearoa New Zealand. Like Te Reo Māori, it is important to foster understanding and use of the language in order to be an inclusive society. Victoria University of Wellington's Deaf Studies Research Unit (DSRU) produced the first paper based dictionary of NZSL 1997. An updated online dictionary website launched in 2011. The online dictionary contains over 5000 signs with equivalents in both English and Te Reo Māori with image and video references showing how a sign is produced and example videos showing how the sign is used in context. The online dictionary can be searched by the English or Te Reo Māori word, or by sign features, such as hand shape and location.

Website and Apps

In 2013 Ackama took over responsibility for the website and both the iOS and Android apps, which were originally built by an independent developer. As well as maintenance and open sourcing, both the website and the apps required considerable updating and redesign. We worked closely with the language experts at DSRU and with other developers including Dave Moskovitz, the creator of the ‘Freelex’ database that originally provided the back-end for the website, and Greg Hewgill, the developer of the original mobile app. Although much of this work was funded through grants obtained by the DSRU from the NZSL Fund and other sources, Ackama has also sponsored and funded time on the project and Ackama staff have also volunteered their own investment time to contribute to the project.

Together with the DSRU, Ackama went on a journey from using open source technology for reasons of price and flexibility to building an entirely open source ecosystem whereby the website, apps, data and scripts are all open source technical components which work together to provide the NZSL dictionary. The community has access to all of these components and can improve upon them or add new features. By open sourcing the NZSL dictionary we encourage the wider community to be involved in making NZSL more accessible. We are also enabling international reuse of the codebase for other countries to have a technical head start in creating their own online sign language dictionary.

In May 2018 the NZSL Android app got up to the number 6 ranking in the worldwide category “Top Free in Books and Reference” apps on Google Play.

New Zealand Sign Language Dictionary consists of 2 major units

  • Ruby on Rails Website (this repo)
  • Mobile apps (transfer of ownership currently in motion)

Build Status

Browser support

As of May 2020 this app supports:

  • IE10+
  • Last two versions of evergreen browsers

IE 10 support is currently important for some sections of our user-base.

Getting Started

Please read the accompanying (in progress) before you follow the setup steps.

Fork the base repo ODNZSL repo, so you have a copy then clone your fork.

$ git clone <your fork>
$ cp env-example .env
$ bin/setup
$ bundle exec rails server

A suggestion is to create a local main branch that acts as your local main. Then branch from your main branch when resolving issues or adding features.

  • Create your feature branch. For example Bugfix/Back-to-search-results
  • Make changes
  • Commit your changes
  • Push to your remote branch. For example git push origin <your feature branch>
  • Ensure all changes to existing functionality and additions of new functionality have tests
  • Create a new pull request to the ODNZSL main branch.
  • If you are not sure on any of the steps please do not hesitate to ask.

If you have run bin/setup, then you will have the latest release of the published dictionary data. If you have not run bin/setup, or you have, but wish to make sure you are using the latest published data, you can run bundle exec rake dictionary:update anytime to update your local database.

Note that the dictionary SQLite file is gitignored to avoid growing the repository size unnecesarily.

Running the tests

# Ruby specs
$ bundle exec rspec

# ruby static analysis
brakeman --run-all-checks --exit-on-warn --format plain .

# Javascript linter
yarn run eslint

# Ruby dependency security vulnerability check
bundle exec bundle-audit check --update

# Ruby linter
bundle exec rubocop --display-cop-names

# ... or run all lints and specs sequentially
$ ./bin/run-ci-checks

Design and brand guidelines

  • The design should follow brand guidelines (Link TBA)
  • The design must follow accessibility guidelines
  • Must follow the sign off process
  • Choose a story from the backlog
  • Get any other information you might need from the product owner
  • Create your design
  • Present to product owner and iterate depending on feedback
  • Once the product owner is happy with the design and signs off on it, then it can go to the development team.
  • The Ackama team uses Sketch app to create their designs. We recommend using Sketch when working on this project. Sketch

Brand guidelines

Functionality over Form

Because of the visual nature of NZSL, it is important that the videos take centre stage and are not obscured by playback controls or watermarks.


NZSL has taken ownership of the project at their ODNZSL repo, but is administrated by Ackama.

Open source contributors pull requests should be to the ODNZSL main branch and ideally up to date with main

The deployment process explained to open source contributors

Deployments are done by Ackama, who will attempt to do so in a timely manner, but does depend on their availability - critical changes like security patches will receive priority.

For site administrators

To deploy to production: merge ODNZSL main to ODNZSL production.


Current servers (2017-12-15)

Environment URL Git Branch Status
ODNZSL Staging main staging
ODNZSL Production production live

Built with


This project is licensed under the GNU License - see the GNU General Public License for details.

Running in production mode locally

# Step 1: precompile assets
$ DEVISE_SECRET_KEY=blah RAILS_FORCE_SSL=false RAILS_ENV=production RAILS_LOG_TO_STDOUT=true RAILS_SERVE_STATIC_FILES=true bundle exec rails assets:precompile

# Step 2: Run server (note you need **all** these flags to run production locally)
$ DEVISE_SECRET_KEY=blah RAILS_FORCE_SSL=false RAILS_ENV=production RAILS_LOG_TO_STDOUT=true RAILS_SERVE_STATIC_FILES=true bundle exec rails server

# Step 3: Delete pre-compiled assets before you go back to normal development
$ DEVISE_SECRET_KEY=blah RAILS_FORCE_SSL=false RAILS_ENV=production RAILS_LOG_TO_STDOUT=true RAILS_SERVE_STATIC_FILES=true bundle exec rails assets:clobber