This is an implementation proposal for Blockstore. The focus will be on defining a separation of concerns for Blockstore as an independently deployable application, and how its concerns should manifest. Where some functionality is delegated to an external service, a brief explanation of how the external component provides that service in the context of Blockstore is given.
...
For reference, we group Units
and Assets
into "Linkables", and those plus Collections
and Links
into "Versionables".
Collection
A Collection
is an abstraction over a group of linkables to provide common metadata to that group.
Note that the fields in a Collection
are mostly metadata, and although many can be argued to be foreign keys to separate models that give a bit more detail for each field, in this first iteration of an implementation draft we simplify things and only use CharFields
– the actual implementation can use extra models as necessary.
Collections
are versioned and thus derive from Version
.
Name | Type | Description |
---|---|---|
uuid | UUIDField | Universally unique identifier for the Collection . |
name | CharField | A descriptive title for the Collection . |
description | CharField | A summary of what this Collection contains. |
owner | CharField | Who legally owns any original content in this Collection . |
author | CharField | Who is credited for authorship of original content in this Collection . |
license | CharField | The license bound to all content in this Collection . |
...