Skip to content
Rizwan Reza edited this page Jun 24, 2015 · 46 revisions

Table of Contents

  1. Documentation Map
  2. Summary
  3. Architectural Overview
  4. Testing Overview

Documentation Map

AKA "What goes where?"

  • GitHub/Wiki (YOU ARE HERE)

    Anything that is mostly relevant to engineers, and only engineers.

  • GitHub/README

    Basic setup and usage information.

  • GitHub/Issues

    Engineering-related discussion.

  • Pivotal

    Features and bugs for progress tracking, with occasional cross-links to Basecamp for specs.

  • Basecamp

    Business- and design-related discussion.

  • Trello

    Roadmaps and retrospective voting.

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), 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.

Architectural Overview

images/tahi_architecture.png Enlarge

Core

The core Tahi application is built with Rails and EmberJS.

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.

Data Dependencies

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.

Modularization

Most Tahi interface functionality is implemented in the form of Rails plugins.

It's preferred to make a separate repository for plugins. Right now, some standard functionality is stored in the Tahi repository in the engines/ subdirectory, but it will be transitioned to external repos.

Doc Translation

One of Tahi's core features is the ability to upload DocX 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