The Technology Stack
Hyrax
If you are starting a new Samvera project, we strongly recommend you start with Hyrax.
At the top of our architecture diagram is “Samvera Applications.” Broadly, these are Ruby on Rails based applications that follow Samvera conventions. While it is possible to create your own Samvera application by assembling the right components, and this has been a common practice in the Samvera community in the past, ongoing maintenance of home grown solutions will be more expensive than sharing maintenance costs with the rest of the community. We are in the process of focusing our community development efforts on Hyrax, and that will be the code base we are best able to support and maintain.
Fedora 4
We use Fedora 4 as our persistence layer. This is where the actual content and its associated metadata (or pointers to them) are stored. Interaction with Fedora happens via an HTTP API. Fedora 4 stores content as linked data.
Solr
We use Apache Solr for our search. Content from Fedora is indexed into solr via ActiveFedora, one of our middleware gems. Interaction with solr also happens via an HTTP API.
Middleware
hydra-head
Hydra-Head is a Ruby-on-Rails gem containing the core code for a web application using the full stack of samvera building blocks.
active_fedora
Ruby on Rails usually follows the Active Record pattern to persist objects to a database. We instead use ActiveFedora to persist objects to Fedora.
ldp
We use a ruby gem called ldp to implement the LDP (Linked Data Platform) interaction patterns for interaction with Fedora 4.
You can read more about how we use LDP containers here.
rsolr
Rsolr is a ruby client for solr.
blacklight
Much of our search and display behavior is inherited from Blacklight. Many Samvera institutions also run Blacklight applications separately from Samvera, to provide search and discovery for their collections. The Blacklight Project also has many of its own plugins, such as Spotlight, for building virtual exhibits, and GeoBlacklight, which enhances Blacklight for use with geospatial data.
Plugins
derivatives
A gem to create derivatives for uploaded content. This might include, for example, generating thumbnails for large images, down-sampled audio and video for web steaming, or thumbnail snapshots of PDF documents.
editor
Hydra-editor is a basic editor for samvera objects.
browse-everything
Browse-everything is a rails engine providing access to files in cloud storage. Currently there are drivers implemented for Dropbox, Skydrive, Google Drive, Box, and a server-side directory share.
file-characterization
hydra-file_characterization uses fits to characterize files and extract metadata about them. It might tell you what kind of image encoding an image uses, along with it’s height and width for example.