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. GitHub or DataHub. 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)


  • 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).