Skip to content
This repository has been archived by the owner on Mar 7, 2024. It is now read-only.



Repository files navigation



This project is experimental and not well supported.


Scribe is a framework for crowdsourcing the transcription of text-based documents, particularly documents that are not well suited for Optical Character Recognition. It is a collaboration between Zooniverse and The New York Public Library Labs with generous support from The National Endowment for the Humanities (NEH), Office of Digital Humanities.

This fork by the Digital Humanities Lab at Utrecht University has additional functionality and updated dependencies and was worked on for the CEMROL crowd-sourcing project.


This project has finished and the application is no longer available for use. If you want, you can get the data here:

Contact us at the Centre for Digital Humanities if you have any questions about this project.

For Project Creators

Are you an organization or individual interested in using Scribe for your next crowdsourced transcription project? Start here!

For Contributors

Would you like to contribute to the codebase? Check out these technical resources about the Scribe framework and make your first pull request!

Example Projects

We are launching Scribe with three very different projects by Zooniverse and The New York Public Library:

Dependencies and Deployment

Software versions

  • Node versions greater than 10. You might need to use n to install and activate a specific version of Node for development. It has been tested to work in production with Node 10 and development using Node 13.

  • Yarn is required for Webpacker.

Code changes

  • In config/mongoid.yml changed sessions to clients .
  • In app/models/classification.rb changed find_and_modify method to find_one_and_update .

Environment variables -- Development

This isn't really mentioned in the ScribeAPI wiki:

  • Create a file in the root of the project called .env .
  • Use rake secret to create a secret key.
  • Add DEVISE_SECRET_TOKEN=yournewkey to .env .
  • Repeat to add SECRET_KEY_BASE_TOKEN=anothernewkey to .env .
  • To specify the name of the Mongo database you want to create, set MONGO_DB=yourdbname
  • If you're going to start up the Puma web server (see below), add RACK_ENV=development and PORT=3000

Also add your OAUTH keys to .env as mentioned in the wiki.

Deployment to Heroku

After creating your Heroku app and database as described in the wiki:

  • Add DEVISE_SECRET_TOKEN and SECRET_KEY_BASE_TOKEN to Heroku's environment variables, eg: heroku config:set "DEVISE_SECRET_TOKEN=yournewkey"
  • Add your MONGOLAB_URI and OAUTH credentials as described in the wiki.

The information about buildpacks in the wiki is out of date. Ignore the section about BUILDPACK_URL but before you deploy to Heroku run the following commands:

  • heroku buildpacks:add --index 1 heroku/nodejs
  • heroku buildpacks:add --index 2 heroku/ruby

The index values are important as Node needs to be built first, otherwise the Ruby build will fail complaining about Browserify.


The original repo had a non-functional procfile -- capitalisation matters to Heroku, so I've renamed it Procfile . Heroku recommends running the Puma web server, so I've just followed their instructions on what to include in the Procfile . If you want to test the config in your development environment, make sure you set the RACK_ENV and PORT values in your .env file and then use Foreman -- foreman start .




  • JavaScript 46.6%
  • Ruby 28.7%
  • HTML 14.9%
  • Sass 6.6%
  • CSS 2.0%
  • Python 0.5%
  • Other 0.7%