-
Notifications
You must be signed in to change notification settings - Fork 0
HykuAddons: Structure
HykuAddons is based on the Samvera stack and can be a little confusing at first. There are a number of Ruby Gems which are used to encapsulate specific sets of functionality within Samvera's ecosystem of Gems and ensure that proper code isolation is achieved. This however, means that it can be tricky to find the location of the code that you are working with.
The basic structure of the Ubiquity Press application, excluding a number of Gems for brevity, can be thought of as follows:
HykuAddons
|
HykuBase
|
Hyrax-2.x HykuAPI
| | | | | |
HydraEditor Bulkrax HyraxOrcid HyraxDOI HyraxHirmeos HyraxAutopopulation
HykuAddons is a Rails engine consisting of a number of customised behaviors targeted at HykuBase.
HykuBase is an version of Hyku, before they made a number of changes that Ubiquity Press felt was not aligned to their needs. Some new features of Hyku have been cherry picked into HykuBase, however the best end goal is for HykuAddons to be upgraded and set to use the community version.
Hyku, from which HykuBase was forked, is an extension to Hyrax, which adds support for multiple tenants in a single instance of the application. This is done via the Account model, and uses the Apartment gem to switch between tenants (accounts).
HykuBase is pinned to the Hyrax 2.x-stable branch.
Hyrax contains the majority of the functionality that HykuAddons relies on, and acts as a central point for the majority of the other related Samvera Gems.
HykuAPI is an open source Ubiquity Press product which creates a number of useful API only endpoints, which return JSON as a response. Ubiquity Press have a proprietary React based frontend that uses the API and allows for much faster response times and a customised interface.
HydraEditor is where the majority of the Hyrax form related functionality is stored. This includes the form partial hierarchy (there is a series of subdirectories that are checked in order to find the correct partial for the form field), the Simple Form fields to deal with their version of multiple fields (HykuAddons adds another version which stores JSON, allowing for ordering of field values, which isn't possible using the default non-deterministic Fedora tupples) and all functionality related to working out the correct Form to render.
HyraxDOI is a Gem which deals with all DOI minting within HykuAddons. It was first developed for use with Hyrax, then HykuAddons extensions were added so that it was able to properly deal with a number of customisations - including JSON Fields.
HyraxOrcid, like HyraxDOI, was first developed for Hyrax, then extended to support HykuAddons. The Gem creates an link between a users Hyku profile and their ORCiD account. They are then able to sync works that they have contributed to to their ORCiD account, as well as display their professional history on their Hyku profile.
HyraxAutopopulation extends the HyraxOrcid Gem, allowing account administrators to import batches of ORCiD profiles and DOIs into their repository.
Bulkrax is a Gem responsible for importing batches of customer works and is highly customised within HykuAddons.
HyraxHirmeos is responsible for sending Hyrax works and files (along with their unique identifiers) to OPERAS/HIRMEOS so that Alt-metrics can be collected. Metrics are a traditional way to measure popularity of publications in the scientific community (i.e. how many time a paper has been cited).