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

Transformation of Papara Android Project

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Emre Tekin Emre Tekin
December 30, 2024
96

Transformation of Papara Android Project

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

Avatar for Emre Tekin

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.