Web application designed to perform digital humanities research tasks on a database of journal articles
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.tx Update Transifex, pull new translations. May 17, 2018
app Fix typo, closes #106. Dec 20, 2018
bin You should be running DJ through our Rake tasks, not the binstub. May 5, 2018
config Add some custom Sentry filters to take junk out of our logs. Jan 5, 2019
db Don't render error pages through a controller. Jun 12, 2018
lib Fix the config loading so that it doesn't break assets:precompile. Dec 20, 2018
public Don't render error pages through a controller. Jun 12, 2018
storage Switch from Paperclip to Rails's own new ActiveStorage. Apr 19, 2018
test Update bundle (which broke to_bool!), keep everything running. Dec 20, 2018
tmp Check a temp directory into the Git repository. May 6, 2012
.env.example Initial work toward autoscaling on local and Heroku instances. Jun 18, 2018
.env.test Set proper defaults for all environment variables. May 14, 2018
.gitignore Fully test all controller code in controller tests. May 9, 2018
.haml-lint.yml Upgrade to Ruby 2.5.1, lint HAML. May 13, 2018
.rubocop.yml Fix a round of lint corrections. May 17, 2018
.ruby-version Update to Ruby 3.6 (requires Webmock update). Jan 14, 2019
.travis.yml Update Travis Ruby version. Jan 14, 2019
.yardopts Update Yard and remove unnecessary doc macros. May 17, 2018
COPYING Add ability to edit Snippets. May 1, 2018
ChangeLog.md Don't double-destroy jobs, which is raising unnecessary errors (#99). Jul 27, 2018
Gemfile Update to Ruby 3.6 (requires Webmock update). Jan 14, 2019
Gemfile.lock Update to Ruby 3.6 (requires Webmock update). Jan 14, 2019
Procfile Don't render error pages through a controller. Jun 12, 2018
README.md Update badges in README. [ci:skip] Jul 29, 2018
RELEASE.md Update ChangeLog. [ci:skip] May 26, 2018
Rakefile Rubocop fixes. May 6, 2018
TODO.md Add ability to edit Snippets. May 1, 2018
config.ru Rubocop fixes. May 6, 2018
package.json Add first-class support for Bootswatch themes. May 17, 2018
yarn.lock Add first-class support for Bootswatch themes. May 17, 2018



Build Status Code Metrics Test Coverage Inline docs External API Docs Code Docs

Homepage: http://rletters.net
Git: http://github.com/rletters/rletters
Author: Charles Pence
Contributors: See Contributors section below
Copyright: © 2014–2018 Charles Pence and the RLetters Team
License: MIT License
Latest Released Version: v3.0
Release Date: May 24, 2018

(Note: This README file describes the unreleased Git version, not the last release, which may be different. Select the appropriate release tag at the top left to see the README for the version you're using.)

RLetters is an application designed to let users perform complex searches as well as digital-humanities and text-mining analysis tasks on a corpus of journal articles.


Text analysis

RLetters allows users to save the results of a given search as a "dataset." This produces a saved record that users can return to later in order to perform text analysis tasks.

While text analysis tasks are a current area of active development in RLetters, currently the following are available:

  • Compute term frequency information (for single words or multiple-word phrases)
  • Compare word usage in two different datasets
  • Graph dataset by publication date
  • Determine statistically significant pairs of words (collocations) or associations between words at distance (cooccurrences)
  • Compute network of words used around a focal word
  • Extract references to proper names (locations, people, organizations)
  • Export dataset as citations in a variety of formats

Complex search

The Solr backend on which RLetters is based allows for a number of complicated searching operations:

  • Searching on the basis of particular fields ("year:2010", "authors:Johnson", or "title:fish")
  • Boolean operators ("darwin OR huxley")
  • Wildcard search ("*fish" or "wom?n")
  • Text stemming ("evolution" matching "evolutionary" or "evolutionist")
  • Fuzzy matching (matching words similar to the requested term)
  • Proximity searching (two terms within N words of one another)

Support for web and library standards

RLetters features a JSON API to return search results to other services around the internet. We also provide support for the following web and library standards:

  • unAPI for automatic bibliographic data retrieval from individual documents
  • WorldCat OpenURL Registry for detection of the OpenURL resolver of the user's local library

And you can export bibliographic data in the following standard formats:

Cutting-edge development and maintenance tools

RLetters doesn't leave your developers out in the cold, either. We've got speedy deployments on Heroku, exception monitoring with Sentry, and our code has a thorough test suite and adheres to a probably unnecessary level of linting and style-guide fanaticism.

Visit the website for more developer information, especially our deployment guide.

Contributors / Support

Special thanks to all contributors to the code here on GitHub. A full list of contributors including their patches can be found at:


We also have received the help of a great community of translators at Transifex. Thanks especially to Alejandro León Aznar.

Also, several features of RLetters wouldn't be possible without the excellent work of other Ruby programmers. Thanks in particular to those behind Ansible, RSolr and RSolr::Ext, and bibtex-ruby. The stop lists found in lib/r_letters/analysis/stop_list are released under the BSD license by the Apache Solr project. The colors in lib/r_letters/visualization/color_brewer are released by the ColorBrewer project under the Apache license.

Charles Pence and Grant Ramsey were supported in the development of RLetters by the National Science Foundation, #1456573, and the National Evolutionary Synthesis Center (NESCent), NSF #EF-0905606.

National Science Foundation National Evolutionary Synthesis Ceter


RLetters © 2011–2018 Charles Pence. RLetters is licensed under the MIT license. Please see the {file:COPYING} document for more information.