Single Page App Front-end
Sinopia's front-end Linked-Data editor is implemented as a single-page application using React components and Redux state management. The Sinopia editor is hosted as a Docker container using Amazon Web Services (AWS) Fargate as an Express node.js application. Besides serving the HTML/JS/CSS files, the application also passes through search requests to the running AWS Elasticsearch Service and does some reformatting of the search results that are then passed back to the running application to be delivered to the client code. Users are managed and authenticated using AWS Cognito service.
The source code for the Sinopia Editor is hosted on Github at https://github.com/ld4p/sinopia_editor under the Apache 2 open-source license. Circle-CI is used for continuous integration with both Jest unit and functional tests along with full integration tests using Cypress.
The primary interaction between the Sinopia Editor and the back-end services is through the Sinopia API that runs as an AWS Fargate container. The Sinopia API provides create, update, and read functionality for all RDF resources and templates in Sinopia using AWS's MongoDB service, DocumentDB. The Sinopia API also indexes new and updated resources and templates to Sinopia's AWS Elasticsearch Service. There are a couple of additional supporting services hosted on AWS using Fargate for indexing the entire datastore, exporting the resources and templates, and for user export.
The Sinopia API source code is available under the Apache 2 open-source license and is available on Github at https://github.com/ld4p/sinopia_api.