Skip to content

Commit

Permalink
GITBOOK-851: Issue #SB-000 doc: Added architecture diagram.
Browse files Browse the repository at this point in the history
  • Loading branch information
swayangjit authored and gitbook-bot committed Aug 7, 2023
1 parent 52a5e56 commit 0f38d8e
Show file tree
Hide file tree
Showing 17 changed files with 144 additions and 2 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .gitbook/assets/L0_MobileApp (1).png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,8 @@
## Development Resources

* [Misc Pages](development-resources/misc-pages/README.md)
* [sunbird-mobile-sdk](development-resources/misc-pages/sunbird-mobile-sdk.md)
* [Sunbird-mobile-app plugins](development-resources/misc-pages/sunbird-mobile-app-plugins.md)
* [Mobile form configurations](development-resources/misc-pages/mobile-form-configurations.md)
* [Content Indexing Flow](development-resources/misc-pages/content-indexing-flow.md)
* [What are multiple databases used for](development-resources/misc-pages/what-are-multiple-databases-used-for.md)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Sunbird-mobile-app plugins

**Cordova plugins** provide a JavaScript interface to native components (Android/ Ios)required by Sunbird Mobile App. They allow the app to use native device capabilities beyond what is available to pure web components.



<table><thead><tr><th width="413">Plugin</th><th>Description</th></tr></thead><tbody><tr><td><a href="https://github.com/Sunbird-Ed/sb-cordova-plugin-downloadmanager.git">cordova-plugin-android-downloadmanager</a></td><td>This plugin helps to download the content ECAR so that it can be consumed in the app. </td></tr><tr><td><a href="https://github.com/adriano-di-giovanni/cordova-plugin-shared-preferences.git">cordova-plugin-awesome-shared-preferences</a></td><td>This plugin is used to access the native SharedPreference functionality.</td></tr><tr><td><a href="https://github.com/Sunbird-Ed/sb-cordova-plugin-fcm.git">cordova-plugin-fcm-with-dependecy-updated</a></td><td>This plugin is used to push notifications with Google Firebase FCM.</td></tr><tr><td><a href="https://github.com/subranil/cordova-plugin-inappupdatemanager.git">cordova-plugin-inappupdatemanager</a></td><td>This plugin is used for checking for updates and auto-updating apps with Google Play Store In-App updates API.</td></tr><tr><td><a href="https://github.com/project-sunbird/cordova-plugin-qr-scanner.git">cordova-plugin-qr-scanner</a></td><td></td></tr><tr><td><a href="https://github.com/Sunbird-Ed/sb-cordova-plugin-customtabs.git">sb-cordova-plugin-customtabs</a></td><td></td></tr><tr><td><a href="https://github.com/Sunbird-Ed/sb-cordova-plugin-db.git">sb-cordova-plugin-db</a></td><td></td></tr><tr><td><a href="https://github.com/project-sunbird/sb-cordova-plugin-sync.git">sb-cordova-plugin-sync</a></td><td></td></tr><tr><td><a href="https://github.com/Sunbird-Ed/sb-cordova-plugin-utility.git">sb-cordova-plugin-utility</a></td><td></td></tr></tbody></table>

25 changes: 25 additions & 0 deletions development-resources/misc-pages/sunbird-mobile-sdk.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
---
description: >-
sunbird-mobile-sdk is the heart of Sunbird-mobile-app which contains all the
business logic starting from API access to offline data management.
---

# sunbird-mobile-sdk

### GitHub Repo

[sunbird-mobile-sdk](https://github.com/Sunbird-Ed/sunbird-mobile-sdk/tree/master)

### Architecture

<figure><img src="../../.gitbook/assets/6e99046b-6872-4361-bf18-ab9c24414be7.png" alt=""><figcaption></figcaption></figure>

### Source Code

The sunbird-mobile-sdk follows a basic typescript library code structure which is modular in nature. The following diagram shows the folder structure of the SDK.

<figure><img src="../../.gitbook/assets/Screenshot 2023-08-07 at 1.35.34 AM.png" alt=""><figcaption></figcaption></figure>

#### plugins

#### src
111 changes: 109 additions & 2 deletions use-1/source-code/workflows/mobile-component-diagrams.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,115 @@
# Mobile - Component Diagrams
---
description: >-
The Sunbird Mobile app is the app-based interface for the Sunbird application
stack. It provides an app(Android/Ios) through which all functionality of
Sunbird can be accessed.
---

# Mobile - Component Diagrams

{% embed url="https://github.com/Sunbird-Ed/SunbirdEd-mobile-app/tree/master" %}

## Architecture

## Source Code
<figure><img src="../../../.gitbook/assets/ed5e8b16-36e7-4738-baa6-3118cb5c6f2c.png" alt=""><figcaption></figcaption></figure>

## [Source Code](https://github.com/Sunbird-Ed/SunbirdEd-mobile-app/tree/master)

Sunbird Mobiles app follows a basic angular / Ionic code structure. The top level of the workspace contains workspace-wide configuration files, configuration files for the application, and test files.

<figure><img src="../../../.gitbook/assets/Screenshot 2023-08-04 at 1.18.12 AM.png" alt=""><figcaption></figcaption></figure>

\
All following primary folders are highlighted in the above screenshot

* plugins
* [app](https://github.com/Sunbird-Ed/SunbirdEd-mobile-app/tree/master/src/app)
* [directives](https://github.com/Sunbird-Ed/SunbirdEd-mobile-app/tree/master/src/directives)
* [pipes](https://github.com/Sunbird-Ed/SunbirdEd-mobile-app/tree/master/src/pipes)
* [services](https://github.com/Sunbird-Ed/SunbirdEd-mobile-app/tree/master/src/services)

### **plugins**

**plugins** folder contains all the plugins which provide JavaScript interface to native components (Android/ Ios)required by Sunbird Mobile App. They allow the app to use native device capabilities beyond what is available to pure web components.

[List of plugins used in the Sunbird Mobile app](../../../development-resources/misc-pages/sunbird-mobile-app-plugins.md)

### app

This folder contains all the modules and components. It contains the Sunbird Mobile app's logic and data.&#x20;

#### Modules

As Modules are a great way to organize an application and extend it with capabilities from external libraries so, in the Sunbird-mobile-app, each functionality/page is configured as a Module. Some key modules are given in the below diagram.

<figure><img src="../../../.gitbook/assets/Screenshot 2023-08-04 at 2.59.34 PM.png" alt=""><figcaption></figcaption></figure>

* [home](https://sunbird-ed.github.io/docs/mobile/modules/HomePageModule.html)
* [qrcoderesult](https://sunbird-ed.github.io/docs/mobile/modules/QrcoderesultPageModule.html)
* [content-details](https://sunbird-ed.github.io/docs/mobile/modules/ContentDetailsPageModule.html)
* [enrolled-course-details](https://sunbird-ed.github.io/docs/mobile/modules/EnrolledCourseDetailsPagePageModule.html)
* [collection-detail-etb](https://sunbird-ed.github.io/docs/mobile/modules/CollectionDetailEtbPageModule.html)
* [discussion-forum](https://sunbird-ed.github.io/docs/mobile/modules/DiscussionForumModule.html)
* [my-groups](https://sunbird-ed.github.io/docs/mobile/modules/MyGroupsPageModule.html)
* [download-manager](https://sunbird-ed.github.io/docs/mobile/modules/DownloadManagerPageModule.html)

&#x20; **. . . . . . . . . . . .**

### directives

This folder contains classes that can add new behavior to the elements in the template or modify existing behavior. These classes are used to maneuver the DOM by adding/ removing new elements to DOM and even changing the appearance of the DOM elements.

Following are a few key directives in the app

* [custom-ion-select](https://sunbird-ed.github.io/docs/mobile/directives/CustomIonSelectDirective.html)
* [read-more](https://sunbird-ed.github.io/docs/mobile/directives/HideHeaderFooterDirective.html)
* [hide-header-foote**r**](https://sunbird-ed.github.io/docs/mobile/directives/ReadMoreDirective.html)

**. . . . . . . . . . .**

### pipes

This folder contains classes containing simple functions to use in template expressions to accept an input value and return a transformed value.

* [category-key-translator](https://sunbird-ed.github.io/docs/mobile/pipes/CategoryKeyTranslator.html)
* [date-ago](https://sunbird-ed.github.io/docs/mobile/pipes/DateAgoPipe.html)
* [file-size](https://sunbird-ed.github.io/docs/mobile/pipes/FileSizePipe.html)
* [mime-type](https://sunbird-ed.github.io/docs/mobile/pipes/MimeTypePipe.html)
* [translate-html](https://sunbird-ed.github.io/docs/mobile/pipes/TranslateHtmlPipe.html)
* [translate-jso**n**](https://sunbird-ed.github.io/docs/mobile/pipes/TranslateJsonPipe.html)

**. . . . . . . . . .**&#x20;

### services

This folder contains classes with the @injectible decorator. This decorator tells angular that the class is a service and can be injected into components that need that service.

* [android-permissions](https://sunbird-ed.github.io/docs/mobile/injectables/AndroidPermissionsService.html)
* [common-form-config-builders](https://sunbird-ed.github.io/docs/mobile/injectables/FrameworkCommonFormConfigBuilder.html)
* [discussion](https://sunbird-ed.github.io/docs/mobile/injectables/DiscussionTelemetryService.html)
* [download-pdf](https://sunbird-ed.github.io/docs/mobile/injectables/DownloadPdfService.html)
* [form-location-factory](https://sunbird-ed.github.io/docs/mobile/injectables/FormAndFrameworkUtilService.html)
* [print-pdf](https://sunbird-ed.github.io/docs/mobile/injectables/PrintPdfService.html)
* [user-groups](https://sunbird-ed.github.io/docs/mobile/injectables/ProfileHandler.html)

**. . . . . . . . . . .**&#x20;

### **sunbird-mobile-sdk**

sunbird-mobile-sdk is the heart of Sunbird-mobile-app which contains all the business logic starting from API access to offline data management.

<figure><img src="../../../.gitbook/assets/Screenshot 2023-08-06 at 2.14.42 AM.png" alt=""><figcaption></figcaption></figure>

### Configurations required to setup Sunbird-mobile-app

These are the set of files required to set up Sunbird-mobile-app

* [sunbird.properties](../../../development-resources/misc-pages/configurations-to-setup-mobile-app.md#1.-sunbird.properties)
* [google-service.json](../../../development-resources/misc-pages/configurations-to-setup-mobile-app.md#2.-google-service.json)

### Forms required to initialize Sunbird-mobile-app

The Form Configurations are a set of predefined forms that enable users to easily modify the UI without changing anything in the source code. Also, it allows users to quickly update any type of app attribute even if the app is already available in Play Store/app store without any app update.

[List of forms available in Sunbird-Mobile-app](../../../development-resources/misc-pages/mobile-form-configurations.md)

0 comments on commit 0f38d8e

Please sign in to comment.