NovaCrate

Web-based interactive editor for creating, editing and visualizing research object crates.

1
contributor
Get started
235 commitsLast commit ≈ 2 days ago5 stars1 fork

Cite this software

Description

📦 NovaCrate - RO-Crate Editor

Web-based fully-featured interactive editor for creating, editing, and visualizing research object crates. Built for inspecting, validating and manipulating RO-Crates, allowing you to get a deeper understanding of its content and structure.

NovaCrate is in active development, we are happy to receive feedback, feature requests and bug reports on the issues page.

▶️ Open NovaCrate

🚀 Features

  • ✅ Create, read, and edit RO-Crates
  • ✅ Live validation of RO-Crates
    • ⚙️ Supports validation of the RO-Crate Specification v1.1
    • 🏗️ Easily extensible to validate profiles or specific RO-Crate types (e.g., Workflow crates)
    • 🚀 Autofix actions available for some issues
  • ✅ Visualize RO-Crates with a graph
  • ✅ Focused on usability and modern architecture
  • ✅ Context-information and property descriptions
  • ✅ Automatic recommendation of fitting entity types and properties
  • ✅ Support for importing and exporting the ELN format
  • ✅ Extensible with custom schemas at runtime
  • ✅ Generate and view an HTML preview file
  • ⚠️ Support for RO-Crate Specification v1.2 is not implemented (coming soon)

🎨 Editions

NovaCrate can be used and deployed in multiple different ways. Currently, only the web version is in active development. You can access it directly here.

💡 If you have a special interest in the Desktop App or the Cloud Frontend, please get in contact.

NameStatusDescriptionNotes
Standalone Web AppActiveStandalone Web App without a backend. Stores Crates in the local origin-private file system of the browserAccess here
Desktop AppConceptTauri App with a local backend. Has full access to file system and can make use of arbitrary backend software.Suitable backend already implemented.
Cloud FrontendConceptNovaCrate is a frontend that can be used with any compatible backend solution, for example a cloud based service that hosts RO-Crates. This approach has not been explored yet due to lack of viable backend solutions.See src/lib/backend/CrateServiceAdapter.ts for a list of methods that a backend adapter should implement

ℹ️ How To: Custom Backend

NovaCrate is a frontend that can be used for any backend that hosts RO-Crates (an appropriate backend adapter must be implemented). This could be anything in the range from a simple file storage to a full REST Service for manipulating crates. See src/lib/backend/CrateServiceAdapter.ts for a list of methods that a backend adapter should implement. All of these methods can make use of backend resources or be supplemented locally.

NovaCrate currently does not include mechanisms for authentication, access control or concurrent access.

👨‍💻 Development

Prerequisites

  • Install Node.js >= 20
  • Clone the NovaCrate repository

Quickstart

Once the prerequisites are met, run the following code to get started quickly:

npm install
npm run dev

Updating dependencies

This step might be necessary after fetching new commits and on the first installation.

npm install

Development

This command starts NovaCrate in development mode. This enables hot reload but also increases response time.

npm run dev

Open http://localhost:3000 with your browser to see the result.

Building

This command builds NovaCrate in the out folder.

npm run build

The website can then be found in the out folder. Use any web server for viewing. Local viewing:

npx serve@latest out

Testing

NovaCrate ships with end-to-end frontend tests that can be used to verify that the core functionality is working as expected. At the current time, the test coverage is relatively low due to the complexity of UI-based testing.

You can run the tests using:

npm run build && npm run serve
# In a different terminal:
npm run test

🎓 Thesis

This project was first created as part of a bachelor thesis

ℹ️ Structure

Most of the structure of the editor and many implementation and design details are outlined in the bachelor thesis.

To summarize: This is a Next.js app. Pages are located in /app, components in /components, and anything else is probably in /lib.

📸 Screenshots

Note: These screenshots are out of date.

Participating organisations

Karlsruhe Institute of Technology (KIT)

Contributors

CR
Christopher Raquet
Karlsruhe Institute of Technology (KIT)