A starter kit for native web apps making use of the IIIF Presentation API
JavaScript
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
public
src
README.md
package.json
tabula.png
webpack.config.js

README.md

tabula icon Tabula

js-standard-style

"Show, don't tell."

Tabula is a "starter kit" for native web applications (aka, "single-page apps") that make use of the IIIF Presentation API.

About tabula

Tabula organizes code in an MVC-like way, so developers who are used to Ruby on Rails (and similar frameworks) will find the approach familiar. The data modeling extends the ever popular and enduring Backbone models and collections. Tabula keeps code simple by adhering to the concepts put forth in Human Javascript, and much credit is due to Henrik Joreteg and the folks at &yet in the development of this approach. Read more at Ampersand.js.

Get Started

npm install
npm start

Demo

You can log in with your GitHub username to play with tabula. The demo is in a rudimentary state and is set up as a simple slide show app, although not fully functional yet. It shows basic integration with GitHub repos (as potential annotation stores) and a Presentation library. This will be completed before the first release.

Features

Manifesto Integration

If you are just building a "read-only" application, you can take advantage of the wonderful Manifesto library, developed by the Universal Viewer lead developer, Ed Silverton (Digerati). Once you have retrieved your manifests using fetch(), you have access to all the Manifesto methods. Here's a usage example for printing out a label:

this.manifest.getLabel()

Manifest Authoring

One reason why Tabula does not make Manifesto more central to the core library is because it does not provide any "setter" methods. This may change in the future, but it has been more expedient, practical, and simple to use the Backbone/Ampersand architecture and all of the "freebies" that come with it, including authoring (setter) features. Authoring is under development.

Persistence

The Tabula demo uses Repono (formerly Manifesto) as it's storage mechanism. Repono is a simple express.js server with a mongodb data store. Local storage could also be used without too much configuration. Other endpoints can easily be configured, but you will likely only be able to "read" and not write to them.

React and Hot Loading

Tabula uses a React view layer, which helps with managing state and performance. It also uses the react-hot-loader, so that code changes happen instantaneously in the browser, making for easy development. It also uses Stylus as a CSS pre-processor, which offers lots of power with utmost simplicity.

Authentication

Tabula provides an example of authenticating with GitHub's OAuth implementation. This is a simple helper that should serve as an example for mixing in other types of authentication schemes.

GitHub as an Annotation "Server"/Endpoint

One reason we have gone with GitHub as an authentication example is because GitHub can be used, with some facade-pattern-based middleware (currently vaporware), as an annotation endpoint. The current options for annotation servers with authentication is sparse, and can be hard to configure. GitHub provides a fairly simple API that can be used to create annotations. While one may authenticate using GitHub credentials, the ability to use it as an annotation store is still under development.

Contributing

Contributions will be welcome after the initial release. Tabula uses Standard to enforce a simple code style. Unit tests are coming! They are the last step before official release of 1.0.0. All pull requests will need to pass tests and adhere to the Standard style guide.

Roadmap

As a "starter kit", Tabula seeks to be a simple reference application for the IIIF Presentation API. The name Tabula (latin for slate or tablet) was selected as a possible "namespace" for a suite of similar applications because it is a tablet with many possibilities. The notion of tabula rasa ("clean state" or "blank tablet") connotes a view of mind as originally blank, on which experience leaves marks. This notion is the basis of Empiricism and ultimately, the scientific method. Plans for instruction-oriented slide show (Tabula Eruditio) and musical "fakebook" (Tabula Musica) extension apps are already under way.