32 lines
1.5 KiB
Markdown
32 lines
1.5 KiB
Markdown
# HubStore
|
|
|
|
> [!warning]Work in Progress
|
|
This is is early stage and still a work in progress.
|
|
|
|
A HubStore maintains a catalog of organizations and their ownership of projects / datasets.
|
|
|
|
It's name derives from the common appelation of "Hub" for something that organizes a collection of individual items e.g. Git*Hub* or Data*Hub*. The HubStore handles the information that makes a Hub a Hub.
|
|
|
|
## Domain Model
|
|
|
|
* Organization
|
|
* Account (User)
|
|
* MembershipRole e.g. admin, editor etc
|
|
* Project (which has a Dataset)
|
|
|
|
Associations
|
|
|
|
* Organization --owns--> Project
|
|
* Organization --membership--> Account
|
|
* Membership association has an associated MembershipRole.
|
|
|
|
Potential extras:
|
|
|
|
* Do we allow Accounts to own Projects or only Organizations? Yes, we do. I think this is a key use case.
|
|
* Organization Hierarchies: Organization --parent--> Organization. One could allow for hierarchies of organizations. We do not by default but it is possible to do so.
|
|
* Team: a convenient grouping of Accounts for the purpose of assigning permissions to something
|
|
* All team members have the same status (if you want different statuses get different teams)
|
|
* Team --membership--> Account (without a role)
|
|
* Example: Github Teams
|
|
* Comment: hirerarchical organizations *could* make much of the use case obsolete. IME teams are an annoying feature of github that bring complexity (who exactly has access to this thing, if i want to remove Person X from access i have to check all the teams with access etc).
|