Introduce Top Level Project resource
ChrisRousey opened this issue · 2 comments
ChrisRousey commented
In order to support team and project collaboration within the application, we would like to introduce the concept of 'Projects'.
With Projects, it will be possible to group other resources (Streams, configs, etc.) into units, so that teams and users can collaborate within one context, instead of manging user rights for each resource separately.
The conceptof projects is outlined in the following chart:
The steps to add Projects, which should be impolemented with this ticket are as follows:
- Add project entity
- Add project endpoint
- Implement a
default
-project - On startup, a default project should be created as defined in
application.yml
- Disable
Default
creation either through a parameter or when none is defined inapplication.yml
- If no project definition exists in the
application.yml
, A project must be created before other resources can - Create a project mapping in other resources. A string representation should be enough.
- Update other resource endpoints with a project path parameter (
Default
being the default value) to filter by project
i.e.GET /api/v1/projects/$uuid$/streams
- A project dropdown should be created in the frontend
- the project flag should be added to api calls automatically from inside the frontend
- Changes should be documented in gitbook by added a new "project" section under building blocks, Using datacter open-core, and API
Notes:
- Projects will not reference configs
- When a resource is created, a project must be set
- project labels should be immutable
ChrisRousey commented
@flippingbits I've created a ticket for the project concept. Feel free to leave any feedback that should be added to the ticket!
flippingbits commented
Thanks for creating the ticket, looks good to me!
Please see below my feedback:
- We should allow to turn off the creation of the default project, via a setting in the
application.yml
. - Instead of using a flag (I guess you are referring to a query parameter?), you might want to discuss/consider making the project part of the URL (e.g., something like
GET /api/v1/projects/$uuid$/streams
or in the default case:GET /api/v1/projects/default/streams
)