This project is a prototype implementation of an RO-Crate based collections archive and data portal based on the Portland Common Data model of collections suitable use in long-term archival repository systems that aim to follow the Protocols for Long Term Archival Repository Services (PILARS) https://w3id.org/ldac/pilars.
The aim is to provide an API-centred reference implementation of a repository with an access-controlled web portal for data dissemination and deposit:
- Backend-agnostic RO-Crate storage using pluggable storage-layers
- OCFL - the Oxford Common File Layout specification on disk or cloud-based object storage
- Object Storage as used in [PARADISEC]
- A simple RO-Crate file layout (TODO - likely a super-simple protocol for directory hierarchy with the presense on RO-Crate used to indicate that everythig under that directory is a single RO-Crate)
- Authorisation based on the concept of Access (and Deposit, TODO) Licenses using an arms-length process with an external authority such as a REMS instance or other license/group managmenet system
- Based on the princuple that all data MUST have a implementation-neutral natural-language description of its access conditiions stored with it
- Licenses may be based on 'traditional' access control lists maintained in software such as PARADISEC or a license manager such as REMS, (TODO: an example implementation using github groups to manage license access, a simple ACL manager?)).
This project was bootstrapped with Fastify-CLI
To run:
# Bring up the database
docker compose up
# Generate db client
npx prisma generate
npx prisma migrate dev
# Run the app
pnpm run dev
In the project directory, you can run:
To start the app in dev mode.
Open http://localhost:3000 to view it in the browser.
For production mode
Run the test cases.
Connect to mysql console
To learn Fastify, check out the Fastify documentation.