Site, Types and Records

Site

Each site is a separate website and data repository.

It should ideally be in one git repository by itself - so one git repository should be thought of as one site.

You can think of sites like a whole database in a database system.

Type

Each site can have multiple types of data in it.

Each type has it’s own set of configuration, rules and guidance.

When a site is build, the data for each type is held separately for easy querying.

Each type is identified by it’s id, which should be unique.

Each type has a:

  • id

  • title

  • a directory set - this is where in the git repository it’s data is stored

  • a JSON Schema - if this is included, any data will be validated against it and a web editor will be available

  • a default format that should be used when creating new records (eg YAML or JSON)

  • a guide spreadsheet - TODO

  • a list of field definitions, and which fields to show when listing the data

You can think of types like a table in a database system.

Field

Each type can have a list of field definitions.

These define interesting data to pull out.

Note that there is currently some duplication between the definition of these and the JSON Schema definition.

Record

Each Type can have multiple records of data.

Each record is identified by it’s id, which should be unique within it’s type.

Each record has a:

  • id

  • data, which can be edited as a whole and also from which values for each field are extracted

You can think of types like an individual row in a table in a database system.