novacrate

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

https://github.com/kit-data-manager/novacrate

Science Score: 65.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
    Organization kit-data-manager has institutional domain (www.scc.kit.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.6%) to scientific vocabulary

Keywords

editor fullstack ro-crate
Last synced: 6 months ago · JSON representation ·

Repository

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

Basic Info
Statistics
  • Stars: 5
  • Watchers: 2
  • Forks: 1
  • Open Issues: 20
  • Releases: 6
Topics
editor fullstack ro-crate
Created about 1 year ago · Last pushed 6 months ago
Metadata Files
Readme License Citation Codemeta

README.md

📦 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 welcome 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 and v1.2
    • 🏗️ 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

🎨 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.

Details on NovaCrate Editions | Name | Status | Description | Notes | |--------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | Standalone Web App | Active | Standalone Web App without a backend. Stores Crates in the local origin-private file system of the browser | [Access here](https://kit-data-manager.github.io/NovaCrate/) | | Desktop App | Concept | Tauri App with a local backend. Has full access to file system and can make use of arbitrary backend software. | Suitable backend already implemented. | | Cloud Frontend | Concept | NovaCrate 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.d.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.d.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:

bash npm install npm run dev

Updating dependencies

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

bash npm install

Development

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

bash npm run dev

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

Building

This command builds NovaCrate in the out folder.

bash npm run build

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

bash 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.

Owner

  • Name: KIT Data Manager
  • Login: kit-data-manager
  • Kind: organization
  • Email: webmaster@datamanger.kit.edu
  • Location: Karlsruhe, Germany

Generic software and recommendations for FAIR research data management by DEM.

Citation (CITATION.cff)

cff-version: 1.2.0
message: If you use this software, please cite it using these metadata.
type: software
title: novacrate
abstract: Web-based interactive editor for creating, editing and visualising 
  research object crates.
version: 1.3.0
keywords:
  - ro-crate
  - ro
  - research
  - object
  - crate
  - editor
  - graph
  - visualize
  - nova
  - novacrate
  - web
  - browser
  - interactive
  - edit
  - next
  - nextjs
  - react
authors:
  - orcid: https://orcid.org/0009-0003-2196-9187
    family-names: Raquet
    given-names: Christopher
    email: christopher.raquet@kit.edu
    affiliation: Karlsruhe Institute of Technology (KIT)
contact:
  - orcid: https://orcid.org/0009-0003-2196-9187
    family-names: Raquet
    given-names: Christopher
    email: christopher.raquet@kit.edu
    affiliation: Karlsruhe Institute of Technology (KIT)
license: Apache-2.0
url: https://kit-data-manager.github.io/NovaCrate/
repository-code: https://github.com/kit-data-manager/NovaCrate

CodeMeta (codemeta.json)

{
  "@context": [
    "https://doi.org/10.5063/schema/codemeta-2.0",
    "https://w3id.org/software-iodata",
    "https://raw.githubusercontent.com/jantman/repostatus.org/master/badges/latest/ontology.jsonld",
    "https://schema.org",
    "https://w3id.org/software-types"
  ],
  "@type": "SoftwareSourceCode",
  "author": [
    {
      "@type": "Person",
      "givenName": "Christopher",
      "familyName": "Raquet",
      "email": "christopher.raquet@kit.edu",
      "@id": "https://orcid.org/0009-0003-2196-9187",
      "identifier": "https://orcid.org/0009-0003-2196-9187",
      "affiliation": "Karlsruhe Institute of Technology (KIT)"
    }
  ],
  "name": "novacrate",
  "description": "Web-based interactive editor for creating, editing and visualising research object crates.",
  "version": "1.3.2",
  "keywords": [
    "ro-crate",
    "ro",
    "research",
    "object",
    "crate",
    "editor",
    "graph",
    "visualize",
    "nova",
    "novacrate",
    "web",
    "browser",
    "interactive",
    "edit",
    "next",
    "nextjs",
    "react"
  ],
  "maintainer": [
    {
      "@type": "Person",
      "givenName": "Christopher",
      "familyName": "Raquet",
      "email": "christopher.raquet@kit.edu",
      "@id": "https://orcid.org/0009-0003-2196-9187",
      "identifier": "https://orcid.org/0009-0003-2196-9187",
      "affiliation": "Karlsruhe Institute of Technology (KIT)"
    }
  ],
  "license": [
    "https://spdx.org/licenses/Apache-2.0"
  ],
  "softwareHelp": "https://kit-data-manager.github.io/NovaCrate/",
  "codeRepository": "https://github.com/kit-data-manager/NovaCrate",
  "buildInstructions": "https://github.com/kit-data-manager/NovaCrate",
  "url": "https://kit-data-manager.github.io/NovaCrate/"
}

GitHub Events

Total
  • Create event: 105
  • Release event: 3
  • Issues event: 30
  • Watch event: 3
  • Delete event: 110
  • Issue comment event: 92
  • Public event: 1
  • Push event: 202
  • Pull request review comment event: 65
  • Pull request review event: 37
  • Pull request event: 221
  • Fork event: 1
Last Year
  • Create event: 105
  • Release event: 3
  • Issues event: 30
  • Watch event: 3
  • Delete event: 110
  • Issue comment event: 92
  • Public event: 1
  • Push event: 202
  • Pull request review comment event: 65
  • Pull request review event: 37
  • Pull request event: 221
  • Fork event: 1

Dependencies

.github/workflows/nextjs.yml actions
  • actions/checkout v4 composite
  • actions/configure-pages v5 composite
  • actions/deploy-pages v4 composite
  • actions/setup-node v4 composite
  • actions/upload-pages-artifact v3 composite
src-tauri/Cargo.lock cargo
  • 367 dependencies
src-tauri/Cargo.toml cargo
package-lock.json npm
  • 758 dependencies
package.json npm
  • @types/node ^20 development
  • @types/react ^18 development
  • @types/react-dom ^18 development
  • autoprefixer ^10.0.1 development
  • eslint ^8 development
  • eslint-config-next 14.2.3 development
  • eslint-plugin-immer ^0.0.1 development
  • npm-run-all ^4.1.5 development
  • postcss ^8 development
  • tailwindcss ^3.3.0 development
  • ts-loader ^9.5.1 development
  • typescript ^5 development
  • webpack ^5.91.0 development
  • webpack-cli ^5.1.4 development
  • @monaco-editor/react ^4.6.0
  • @radix-ui/react-alert-dialog ^1.0.5
  • @radix-ui/react-checkbox ^1.0.4
  • @radix-ui/react-collapsible ^1.0.3
  • @radix-ui/react-context-menu ^2.1.5
  • @radix-ui/react-dialog ^1.0.5
  • @radix-ui/react-dropdown-menu ^2.0.6
  • @radix-ui/react-label ^2.0.2
  • @radix-ui/react-menubar ^1.0.4
  • @radix-ui/react-popover ^1.0.7
  • @radix-ui/react-progress ^1.0.3
  • @radix-ui/react-radio-group ^1.1.3
  • @radix-ui/react-select ^2.0.0
  • @radix-ui/react-slot ^1.0.2
  • @radix-ui/react-switch ^1.0.3
  • @radix-ui/react-tabs ^1.0.4
  • @radix-ui/react-tooltip ^1.0.7
  • @std/path npm:@jsr/std__path@^1.0.8
  • @tauri-apps/api ^1.5.6
  • @types/dagre ^0.7.52
  • @types/luxon ^3.4.2
  • auto-bind ^5.0.1
  • auto-zustand-selectors-hook ^2.0.0
  • class-variance-authority ^0.7.0
  • clsx ^2.1.0
  • cmdk ^1.0.0
  • dagre ^0.8.5
  • happy-opfs file:happy-opfs-1.8.4.tgz
  • immer ^10.0.4
  • js-file-download ^0.4.12
  • jszip ^3.10.1
  • lucide-react ^0.363.0
  • luxon ^3.4.4
  • monaco-editor ^0.48.0
  • next 15.2.4
  • next-themes ^0.4.4
  • prettier ^3.2.5
  • pretty-bytes ^6.1.1
  • react ^18
  • react-dom ^18
  • react-markdown ^9.0.1
  • react-resizable-panels ^2.0.16
  • reactflow ^11.11.3
  • sonner ^1.5.0
  • swr ^2.2.5
  • tailwind-merge ^2.2.2
  • tailwindcss-animate ^1.0.7
  • use-file-picker ^2.1.2
  • usehooks-ts ^3.1.0
  • zod ^3.23.8
  • zundo ^2.1.0
  • zustand ^4.5.2