Skip to content
Max Cantor edited this page Jun 9, 2015 · 46 revisions

[[TOC]]

Documentation Compass

AKA "What goes here?"

This is the Tahi Project Wiki.

Anything that is mostly relevant to engineers, and only engineers, should go here.

Basic setup and usage information should go in the README.

Summary

Tahi is a platform for submitting and revising academic manuscripts. It is owned by the Public Library of Science (PLOS) and developed by a variety of consultants, including Neo (located in NYC and SF), MutuallyHuman (located in Columbus, staffed primarily by former Neons), and a few others.

Tahi's users are not only non-technical employees at PLOS and its constituent journals, but also their developers, who will have access to the open-source Tahi codebase, making them able to tweak and write their own journal-specific extensions.

Development Basics

See the for instructions on how to get up and running.

Architectural Overview

The core Tahi application is built with Rails 4.2 and EmberJS 1.12.

The Rails asset pipeline has been eschewed in favor of ember-cli's include_ember_script_tags().

Ember-specific code lives in the client subdirectory.

PostgreSQL is the ActiveRecord store of choice in all environments.

Slanger and web sockets are used to perform live updates for conversations and workflow updates.

Sidekiq is used for background jobs such as generating epub and pdf files, and sending e-mails.

Redis is a dependency of both Slanger and Sidekiq, and must be running for the app server to function.

Most Tahi interface functionality is implemented in the form of Rails plugins. Right now, most standard functionality is stored in the same repository in the engines subdirectory, but it will be transitioned to external repos and still installed via Gemfile.

One of Tahi's core features is the ability to upload doc files (the lingua franca of academic publishing) and automatically translate them to HTML editable within Tahi itself. Since manuscripts can contain everything from images to complex mathematical formulae, this is a more complex operation than you might expect. It is handled by a separate tool called iHat.

Testing Overview

Standard rspec-rails is used for testing Rails components.

Capybara is used for browser tests, which live in the spec/features folder.

QUnit is used for Ember tests, which live in the client/tests folder.

Capybara tests are older, and will be mostly eventually phased out in favor of QUnit integration tests.

Clone this wiki locally