Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Transformation of Papara Android Project

Emre Tekin
December 30, 2024
6

Transformation of Papara Android Project

Let’s take a look behind the scenes of the Android development at Papara

Emre Tekin

December 30, 2024
Tweet

Transcript

  1. Transformation of Papara Android Project Let’s take a look behind

    the scenes of the Android development at Papara February 2022 - December 2024
  2. About Me 👋 Emre Tekin 🎓 MIS Graduate – MAKÜ

    💼 Senior Android Developer – Papara 💻 9 Years of Experience as an Android Developer https://bento.me/emretekin 1
  3. Code Standard Why? • Code Quality • Team Communication and

    Collaboration. • Easy Catch Before PR Review How? We integrated KtLint & Detekt tools. We solved Performance, Security, Deprecated Warnings. Added static code static to our precommit process.
  4. Code Standard Why? • Code Quality • Team Communication and

    Collaboration. • Easy Catch Before PR Review How? • We integrated KtLint & Detekt tools. • We solved Performance, Security, Deprecated Warnings. • Added static code analysis to our precommit process.
  5. Koin to Dagger Hilt Why? • RuntimeException vs Compile Time

    Exception • Officially supported and recommended by Google How? We replaced Koin modules with Hilt modules. We tested the whole application in a week by organising two different sessions with Android team.
  6. Koin to Dagger Hilt Why? • RuntimeException vs Compile Time

    Exception • Officially supported and recommended by Google How? • We replaced Koin modules with Hilt modules. • We tested the whole application in a week by organising two different sessions with Android team.
  7. Replaced Network Request to Retrofit Why? • Less boilerplate code

    to write • More code readability • Coroutine for asynchronous operations How? We created a new Network Module We used @Deprecated annotation to keep team at the same point.
  8. Replaced Network Request to Retrofit Why? • Less boilerplate code

    to write • More code readability • Coroutine for asynchronous operations How? • We created a new Network Module with retrofit. • We used @Deprecated annotation to keep team at the same point.
  9. Removing Data Binding Why? • Build Times • Code Readability

    • Testing and Debugging How? We created new Base Fragment. Replaced our Fragment to View Binding. Replaced ViewState to UiModel Classes.
  10. Removing Data Binding Why? • Build Times • Code Readability

    • Testing and Debugging How? • We created new Base Fragment. • Replaced our Fragment to View Binding. • Replaced ViewState to UiModel Classes.
  11. Replaced Design Pattern as MVVM Clean Arch. Why? • Separation

    of Concerns • Improved Testability • Testing and Debugging How? Create new Core ViewModel Replace LiveData to StateFlow/SharedFlow
  12. Replaced Design Pattern as MVVM Clean Arch. Why? • Separation

    of Concerns • Improved Testability • Testing and Debugging How? • Create new Core ViewModel • Replaced LiveData to StateFlow/SharedFlow
  13. Migrated to Project Multi Module Why? • Improved Build Times

    • Separation of Concerns • Reusability • Team Collaboration How? We detached the dependencies under the App folder. We created new Feature Module.
  14. Migrated to Project Multi Module Why? • Improved Build Times

    • Separation of Concerns • Reusability • Team Collaboration How? • We detached the dependencies under the App folder. • We created new feature module for our domains.
  15. Started Unit Test Integration Why? • Early Detection of Bugs

    • Separation of Concerns • Reusability • Team Collaboration How? • We added unit test to our definition of done process. • We integrated SonarQube to measure test coverage and app performance.
  16. Migration to Jetpack Compose Why? • Modern, Declarative UI Development

    • Enhanced Developer Productivity • Better Performance • Customizability and Flexibility • Future-Proof Development How? We created BaseComposeFragment. We replaced Ui Component & Widgets as Compose ui. Used ComposeView and AndroidView to combine work. Did not break navigation system and made compose screens worked via fragments.
  17. Migration to Jetpack Compose Why? • Modern, Declarative UI Development

    • Enhanced Developer Productivity • Better Performance • Customizability and Flexibility • Future-Proof Development How? • We created BaseComposeFragment. • We replaced Ui Component & Widgets as Compose ui. • Used ComposeView and AndroidView to combine work. • Did not break navigation system and made compose screens worked via fragments.
  18. Created UI Kit & Framework Repository Why? • Reduced projects

    build time. • We kept independent tools in one place. • No logic according to any project. How? • Moved common ui components to new ui kit. • Moved common helper kits to framework.
  19. Conclusion & Benefits? • Crash Free Rate Papara Papara Business

    Last 7 days: 99.91 Last 7 days: 99.75 Last 90 days: 99.64 Last 90 days: 99.6
  20. Conclusion & Benefits? • Crash Free Rate Papara Papara Business

    Last 7 days: 99.91 Last 7 days: 99.75 Last 90 days: 99.64 Last 90 days: 99.6
  21. Team Communication & Collaboration? • Get to know about your

    team. • Add gamification to your process. • Make determined & efficient PR process. • Don't be selfish, be a team member. • User experience above all.