Skip to content

Latest commit

 

History

History
67 lines (57 loc) · 3.33 KB

implementation.md

File metadata and controls

67 lines (57 loc) · 3.33 KB
layout
default

Sinopia Technology Implementation

The Sinopia Stack uses Circle-CI for continuous integration to validate the code syntax using eslint and test the code base using a combination of Jest, Enzyme, and Puppeteer. Circle-CI also creates Docker images on Dockerhub that are automatically deployed to Sinopia's AWS development environment.

Sinopia Linked Data Editor

A hard fork of the Library of Congress BIBFRAME Editor, Sinopia's Linked Data Editor is a node.js project that uses the open-source javascript library React to build the client-side user interface with supporting node.js libraries like Redux for managing the data state of the editor.

The Linked Data Editor also implements a Swagger REST API for search and look-up interactions with third parties like the Questioning Authority service from Cornell. The Sinopia Linked Data Editor requires a valid JSON Web Token (JWT) from users that authenticate through Amazon Web Service's Cognito for create-delete-update operations for both resource templates and RDF data.

Sinopia's Linked Data Editor source code repository is hosted on Github at https://github.com/ld4p/sinopia_editor.

Sinopia Profile Editor

Sinopia's Profile Editor is a forked version of Library of Congress Profile Editor that allows users to build resource templates contained in profiles and save the resulting file to the local file system. Minimal refactoring was done to this codebase with new Sinopia branding, and user interface modifications supporting the use of JSON schema validation.

Sinopia's Profile Editor source code repository is hosted on Github at https://github.com/LD4P/sinopia_profile_editor.

Sinopia Server

The Sinopia Server includes a Docker environment that uses the linked-data platform Trellis as the main technology for managing both RDF and non-RDF data. The Sinopia Stack uses the Postgres relational-database variant of Trellis for the storage layer with an Elasticsearch search index for discovery and search. Create-update-delete operations in Trellis are controlled by incoming JWTs from the Sinopia Linked Data editor or supporting tools.

The primary method of interaction between the Sinopia Linked Data Editor and the Sinopia Server is through a Swagger REST API client that is published as a npm (node package manager) package at https://www.npmjs.com/package/sinopia_server.

The Sinopia Server's source code repository is hosted on Github at https://github.com/LD4P/sinopia_server.