Open Ingvord opened 2 months ago
As #1505 shows one can already have quite isolated "plugins" in SciCat FE. However real plugins system requires some more efforts.
Here is how I see plugins roadmap in general:
Extract TypeScript Definitions:
Identify and extract necessary TypeScript definitions from the SciCat frontend. For instance, DatasetState definition or e.g. DataSet itself etc
DatasetState
DataSet
Create a shared types package (e.g., scicat-shared-types).
scicat-shared-types
For any given plugin:
Set Up New Angular Project:
Create a new Angular project for the generic component.
Implement the component using the shared types.
Integrate Shared Types:
Install the scicat-shared-types package in the new plugin project.
Utilize the shared types in the component.
Publish the Plugin:
Update SciCat FE:
Install the new plugin and shared types package.
Update import paths and integrate the plugin into the SciCat frontend.
An interesting point is to extract those scicat-shared-types. Ideally those has to be generated from common schema or sdk
Apparently Angular has already implemented microfrontends, hence plugins in Angular Federation
I believe for us (if we go this way) the best will be to leverage this
As #1505 shows one can already have quite isolated "plugins" in SciCat FE. However real plugins system requires some more efforts.
Here is how I see plugins roadmap in general:
Extract TypeScript Definitions:
Identify and extract necessary TypeScript definitions from the SciCat frontend. For instance,
DatasetState
definition or e.g.DataSet
itself etcCreate a shared types package (e.g.,
scicat-shared-types
).For any given plugin:
Set Up New Angular Project:
Create a new Angular project for the generic component.
Implement the component using the shared types.
Integrate Shared Types:
Install the scicat-shared-types package in the new plugin project.
Utilize the shared types in the component.
Publish the Plugin:
Update SciCat FE:
Install the new plugin and shared types package.
Update import paths and integrate the plugin into the SciCat frontend.
An interesting point is to extract those
scicat-shared-types
. Ideally those has to be generated from common schema or sdk