Technical Overview

The repository is publicly available on github, and can be found here.

Technology Stack

  • Ruby on Rails - overall web framework for the new SDBM, using Rails version 4.
    Gems:
    • Paper Trail - Used for storing change history for certain record types, allowing for change reversions as well.
    • Delayed Job - Handles background indexing of record updates, as well as background jobs such as CSV search compilation.
    • Capistrano - The current deployment method.
    • RSpec/Capybara/Poltergeist - Used for testing coverage of the app, including front-end headless browser testing via Poltergeist.
  • Apache Solr - used through the Rails Sunspot gem and Blacklight to provide indexing, searching and faceting on the database.
  • Blacklight - Rails plugin providing front end display support for catalog-like public searches functionality including:
    • the display of search results
    • the display and browsing of facets
    • the advanced search page
    • saving searches
  • MySQL - the data is stored in a MYSQL relational database, accessed through the Rails API.
  • Unicorn - the SDBM is run on a CentOS based Unicorn web server.

Client Side Javascript

We use the following libraries, some of which are stored in the /vendor/assets/ directory:

  • jQuery - utlitarian JS library used almost everywhere for basic ease of use and readibility.
  • AngularJS 1.3 - used to interface with Rails for dynamic content across multiple pages, including data entry and bookmarks.
  • Bootstrap UI - an AngularJS extension for Bootstrap widgets, allowing interactive popups, modals and other useful behavior.
  • datatables.net - used on the various 'Manage Records' pages, allows for clean rendering of complex data tables.
  • URI.js - library used for manipulating URIs when neccessary.
  • jQuery.qtip - library used for tooltip popups across the entire site.

The data model for the application has been updated to address issues and limitations of the old database. An in depth explantion can be found here.