GSoC 2022 - OpenMRS Android Client Project 3.0.x - Final Presentation

Project Summary

Overview

The main objective of the project is to migrate the whole architecture of the Android Client Project from MVP to MVVM so that it makes the app more robust, scalable, easier to test, and make the codebase cleaner and easier to understand for newcomers. I’ve completed this objective and some of the other side objectives (Dependency injection using Hilt, and migrating from Java to Kotlin (24% to 59%)). What’s left to do is to continue converting the rest of the codebase (41%) from Java to Kotlin, and increasing the test coverage in the project.

The following is a Public Google Drive Link for the final presentation video of the project showcasing the work done throughout the GSoC coding period:

Objectives

Primary:

  1. Migrate the architecture of the app from MVP to MVVM. (COMPLETED)

Additional:

  1. Integrate dependency injection using Hilt. (COMPLETED)
  2. Migrate codebase from Java to Kotlin (60%). (COMPLETED)
  3. Make the app more stable, and reduce bugs and crashes. (COMPLETED)
  4. Increase test coverage in the project. (INCOMPLETE)

Contributions

Week 1

Week 2-3-4

Week 5

Issue Number PR Link Status
AC-1031 openmrs/openmrs-contrib-android-client#949 Merged
AC-1032 openmrs/openmrs-contrib-android-client#950 Merged

Week 6-7-8

Issue Number PR Link Status
AC-1033 openmrs/openmrs-contrib-android-client#952 Merged

Week 9

Issue Number PR Link Status
AC-1034 openmrs/openmrs-contrib-android-client#955 Merged

Week 10-11

Issue Number PR Link Status
AC-1035 openmrs/openmrs-contrib-android-client#956 Merged

Week 12

Issue Number PR Link Status
AC-1036 openmrs/openmrs-contrib-android-client#957 Merged

Week 13

Issue Number PR Link Status
AC-1037 openmrs/openmrs-contrib-android-client#958 Merged
AC-1038 openmrs/openmrs-contrib-android-client#959 Merged

Week 14

Week 15

Issue Number PR Link Status
AC-1043 openmrs/openmrs-contrib-android-client#964 Merged

Week 16

Issue Number PR Link Status
AC-1044 openmrs/openmrs-contrib-android-client#966 Merged
AC-1045 openmrs/openmrs-contrib-android-client#967 Merged

Week 17

Issue Number PR Link Status
AC-1047 openmrs/openmrs-contrib-android-client#968 Merged

Week 18

Issue Number PR Link Status
AC-1048 openmrs/openmrs-contrib-android-client#969 Merged
AC-1049 openmrs/openmrs-contrib-android-client#970 Merged

Week 19

Issue Number PR Link Status
AC-1050 openmrs/openmrs-contrib-android-client#971 Merged

Week 20

Issue Number PR Link Status
AC-1046 openmrs/openmrs-contrib-android-client#973 Merged

Week 21

Issue Number PR Link Status
AC-1030 openmrs/openmrs-contrib-android-client#975 Merged
AC-1051 openmrs/openmrs-contrib-android-client#974 Merged

Week 22

Talk Thread links:

Weekly Blogs (Updates)

Week Article Link
Week 0 Week 0: GSoC With OpenMRS β€” 2022. Hi everyone! | by Amr Salah | Medium
Week 1 Week 1: GSoC With OpenMRS β€” 2022. Hi everyone! | by Amr Salah | Medium
Week 2 Week 2: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 3 Week 3: GSoC With OpenMRS β€” 2022. Hi everyone! | by Amr Salah | Medium
Week 4 Week 4: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 5 Week 5: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 6 Week 6: GSoC With OpenMRS β€” 2022. Hi everyone! | by Amr Salah | Medium
Week 7 Week 7: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 8 Week 8: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 9 Week 9: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 10 Week 10: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 11 Week 11: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 12 Week 12: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 13 Week 13: GSoC With OpenMRS β€” 2022 | by Amr Salah | Medium
Week 14 Week 14: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 15 Week 15: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 16 Week 16: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 17 Week 17: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 18 Week 18: GSoC With OpenMRS β€” 2022 | by Amr Salah | Oct, 2022 | Medium
Week 19 Week 19: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 20 Week 20: GSoC With OpenMRS β€” 2022 | by Amr Salah | Oct, 2022 | Medium
Week 21 Week 21: GSoC With OpenMRS β€” 2022 - Amr Salah - Medium
Week 22 Week 22: GSoC With OpenMRS β€” 2022 | by Amr Salah | Nov, 2022 | Medium

Resources

  • OpenMRS Android Client Project Repository - Link
  • My Forked Repository (contains latest work) - Link
  • Android Client Users Guide - Link
  • The server used during the project (qa-refapp, NOT demo server) - Link
  • OpenMRS Android Client Project JIRA - Link
  • Project Wiki Page - Link
  • Project Report - Link

Future Work

  • Increase test coverage in the project.
  • Migrate the rest of the codebase (40%) from Java to Kotlin.
  • Update OpenMRS Android SDK library to the latest changes.
  • Fix the Continuous Integration checks for the PRs in Android Client’s GitHub repository because they ignore the failing tests.
  • Add guidelines regarding the architecture and patterns followed in the project for any future contributions (for more consistency).

Thoughts on GSoC

Lastly, I would like to thank my mentor, the org admins, and community members for their continuous support and help during the project. It was so exciting to be working on this project with this wonderful community! I learned a lot during this project and would like to thank everyone for this opportunity.

3 Likes

cc: @jennifer @kdaud @herbert24 @grace

cc: @rohitsharma

3 Likes

@salahoamro is the OpenMRS android app deployed on the google play store?

/cc: @rishabh997

@kdaud An old broken version is deployed, the app is not working with that old one.

Do you think you have the bandwidth to deploy an updated app?

the app could not be properly responsive on foldable phones and some bugs

Thanks @salahoamro for the nice work

1 Like

@kdaud No problems I can help with the deployment but it needs some time as it requires creating a privacy policy page and filling data safety and showing app permissions uses and some other forms to fill in order to be accepted in Play Store. Also, the debug build always differs a bit from the release build so we need to test it after deploying it in Play Store as to fix any unexpected bugs.