MT-04 Evaluate Offline-Architectures

MT-04 Evaluate Offline-Architectures

Goal:”Evaluate multiple offline-architectures to find the best fitting one for implementing an MVP in openIMIS”

Requirements

To evaluate the best fitting architecture we need to define various requirements. All architectures must support the below mentioned requirements. Additionally, they need to be the most performant and cos-efficient one (as mentioned in MT-03 Develop Metrics ). The list is split into “functional” and “non-functional” requirements.

Using the SCAM method, one out of the several architectures from the list below will be chosen. Hence, a analysis using the SACAM method will be done.

Functional

#

User Story

1

As a user, I want the application to load even without an internet connection so that I can continue using it offline.

2

As a user, I want previously visited pages or content to be available when I'm offline so that I can access information I’ve already seen.

3

As a user, I want to see a fallback message or page when a resource isn’t available offline so that I understand what’s happening.

4

As a user, I want my inputs and data to be saved locally when offline so that I don’t lose work if I lose connection.

5

As a user, I want any changes I make offline to sync automatically when I regain internet access so that I don’t have to remember to submit them again.

6

As a user, I want to be notified when I go offline or come back online so that I understand the app’s current capabilities.

7

As a user, I want any unavailable UI elements in offline mode to be disabled so that I don’t try actions that won’t work.

8

As a user, I want to be notified if there’s a conflict between my offline changes and server data so that I can choose what to keep.

9

As a user, I want to use the offline mode without any additional installation needed, so that I don’t have to learn new functionalities

10

As a user, I want to use the offline mode in my Webrowser which is supported by openIMIS so that I dont have to install/use another one

11

As a user, I want to have the same performance of using openIMIS while background synchronisation is happening, so that I’m still possible to work.

12

As a user, I want to Login/Logout to openIMIS even if the system is in offline mode.

13

As a user, I want to get, create, update and deleted all patients and claims, same as in the online version, so that I can work efficiently.

Non-Functional

#

Requirement

Topic

1

The Offline Mode Module must register service workers only over HTTPS.

Security

2

The Offline Mode Module must encrypt locally stored patient data.

Security

3

The Offline Mode Module must use only trustful and supported packages as dependencies

Security

4

The Offline Mode Module must ensure, that responses are generated and send at least as fast as the online version.

Performance

5

The Offline Mode Module must ensure caching does not significantly degrade online performance.

Performance

6

The Offline Mode Module must complete background synchronization operations within 500ms

Performance

7

The Offline Mode Module must retain cached content for a minimum of 30 days unless explicitly cleared or updated.

Reliability

8

The Offline Mode Module must handle offline-to-online transitions without data corruption or user disruption.

Reliability

9

The Offline Mode Module must retry failed offline sync operations using exponential backoff.

Reliability

10

The Offline Mode Module must support offline mode in all modern browsers (Chrome, Firefox, Safari, Edge).

Availability

11

The Offline Mode Module must log offline errors and sync issues for developer diagnostics.

Observability

12

The Offline Mode Module must support Linux, MacOS as well as Windows

Compatibility

13

The Offline Mode Module must implement cache versioning to safely manage service worker updates.

Maintainability

14

The Offline Mode Module should track usage and performance of offline mode (e.g., sync success rates, offline sessions).

Observability

15

The Offline Mode Module must make sure, that no additional installations are needed for.

Maintainability

Offline Mode Architectures

#

Architecture

Description

Investigate?

1

Offline App

Development of an native offline Application which runs directly on the OS. Sync is done via bulk downloads and uploads.

 

2

Local First

Creating a local-first application which then allows CRDTs (Conflict-free replicated data type) to automerge all changes in a same document working on.

 

3

PWA

Progress-Web App using a service-worker to make the web application to have the same UX as native ones.

 

4

 

 

 

5