[FOLIO-762] refactor apps to allow for better isolation and limit shared dependencies Created: 07/Aug/17  Updated: 18/Jan/19

Status: Open
Project: FOLIO
Components: None
Affects versions: None
Fix versions: None

Type: Umbrella Priority: P3
Reporter: Jakub Skoczen Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: for-next-sprint
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original estimate: Not Specified

Sprint:
Development Team: Core: Platform

 Description   

Guys, I'd like to start a discussion on how to address the problem of the basic apps (ui-users, ui-scan, ui-items) getting tightly coupled and relying on the common set of dependencies (thus not providing any benefits of the "bounded" context).

Example: user detail pane includes sections that show information related to circulation: current and historical loans, and soon, outstanding requests. Eventually we will also include a section on fees and fines. Our approach so far was to code those sections directly in the ui-users and include direct dependency on mod-circulation (possibly mod-inventory) modules.

This is problematic because we are losing all the benefits of (at least some) isolation: ability to replace an app independent of other apps, ability to replace or modify the backend dependencies without a wide impact on the front-end, and finally, for multiple teams to work in parallel without stepping on each other toes.

I'd like to investigate if we can refactor the apps and use the "plugin" functionality (as it exists now, or extended with new capabilities) to bundle front-end components that pertain to managing specific kind of information (e.g CRUDing loans) together.

Example: ui-users does not include the "loans", "request" and "fees and fines" sections, nor does it depend directly on mod-circulation and mod-inventory. Rather, It designates "pluggable" sections where components are be provided by other apps. In this particular case, ui-scan (or ui-circulation, in the new layout) would provide those specific sections, if installed.

Potential issues: in many cases the information provided within the "pluggable" sections would heavily depend on the context of the the embedding component (e.g in the example above UUID of the selected user). This context may get complex in some cases, is this going to be a problem?


Generated at Thu Feb 08 23:08:09 UTC 2024 using Jira 1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d.