Install the node packages:
npm install
Install the git hooks:
npx simple-git-hooks
Set up Docker:
cp docker-compose.override.yaml.example docker-compose.override.yaml
Set up the environment files:
cd .envs
cp .cms.example .cms
cp .database.example .database
cp .etl.example .etl
Run the stack:
npm run up
The cms is available at http://localhost:8055/ by default and if no port configuration changed.
Create a snapshot:
npm run cms:snapshot
Apply a snapshot:
npm run cms:snapshot:apply --snapshot=SNAPSHOT_NAME
Where SNAPSHOT_NAME
is the name of the snapshot without path or extension. By default
the data model snapshots are saved in cms/snapshots.
This data model is based on the schema.org vocabulary.
Local customisations are prefixed with KDL
and models internal to the CMS
are prefixed with CMS
.
erDiagram
AGENT }o--o{ LINKROLE: url
AGENT ||..o{ ORGANISATION: is
AGENT ||..o{ PERSON: is
AGENT }o--o{ KDLROLE: memberOf
AGENT {
string name
string alternateName
string description
}
ORGANISATION ||--o| ORGANISATION: parentOrganisation
ORGANISATION {
date foundingDate
date dissolutionDate
}
DEFINEDTERMSET ||--o{ DEFINEDTERM: hasDefinedTerm
DEFINEDTERMSET ||--o{ LINKROLE: url
DEFINEDTERMSET {
string name
}
DEFINEDTERM ||--|| DEFINEDTERMSET: inDefinedTermSet
DEFINEDTERM {
string name
}
PROJECT ||--|| DEFINEDTERM: creativeWorkStatus
PROJECT }o--o{ DEFINEDTERM: keywords
PROJECT ||--o| cmsIMAGE: image
PROJECT }o--o{ LINKROLE: url
PROJECT ||--o{ ORGANISATION: department
PROJECT }o--o{ AGENT: funder
PROJECT }o--o{ KDLROLE: member
PROJECT }o--o{ PROJECT: relatedTo
PROJECT {
string name
string slug
string alternateName
date foundingDate
date dissolutionDate
text description
}
KDLROLE ||--|| AGENT: agent
KDLROLE ||--|| ORGANISATION: inOrganisation
KDLROLE ||--|| PROJECT: inProject
KDLROLE {
string name
date startDate
date endDate
}
LINKROLE {
string name
date startDate
date endDate
string url
}
WEBPAGE ||--|{ AGENT: author
WEBPAGE }o--o{ AGENT: contributor
WEBPAGE ||--o{ DEFINEDTERM: keywords
WEBPAGE ||--o| CMSIMAGE: image
WEBPAGE }o--o{ AGENT: about
WEBPAGE }o--o{ PROJECT: about
WEBPAGE ||--|| WEBPAGE: isPartOf
WEBPAGE ||--o{ WEBPAGE: hasPart
WEBPAGE {
string name
string slug
string type
text abstract
text text
}