Main part

Offline mode (OM) for course mainly consists of 3 main parts:

Additional information, questions and updates:

Content pre downloading

This part is about how user will receive a content for a specific course on their device to be able to work while offline. This requires to download:

Solution

For JSON based data it is going to be cached for future offline use. No extra work on the backend.

For XBlocks a compressed file with all static files is generated presumably only on course publish event.

Implementation assumptions

Offline-to-online sync

This part involves batch data transfer when a user goes online after being offline. It requires to take care of:

Solution

Create:

XBlock submissions assumptions

Events assumptions

Course XBlocks updates

This part is partially touched in the section above when state changes are mentioned. There are different scenarios when the XBlock stored on the mobile device for offline mode is required to be updated.

Solution

Endpoint for XBlock can be extended with query parameters to be able to download default state of the XBlock and state with a feedback. If user would want to reset his feedback in the offline mode there will be 2 XBlocks states already stored.

Potentially it would be good to know which XBlocks are outdated before sending batch data to the server. By this potential conflicts can be avoided. Validating all XBlocks can require to have a separate endpoint with last updates dates. Mobile application can compare each XBlock update date and react in different ways like show some information for user or skip submissions for outdated XBlock.

Offline-friendly XBlocks

Here will be information on which XBlocks are offline-friendly and which are not and why

Questions and updates

Assumption:

  • 1st level - Read-only capa problems (1st step)

  • 2nd level - Save submission on mobile, send it after user goes online (2nd step)

  • What capa problems features can be supported in offline? - RG will prepare

  • Prepare suggestion for showing mobile-friendly stats for blocks in studio