/Absolute

Compose Server-Driven UI

Primary LanguageKotlin

About

  • How to work with realtime-database(RTDB)?
  • How to work with cloud-messaging(FCM)?
  • How to modify and use other libraries in all my future projects?
  • How to make realtime-database typesafe?
  • How to make multi-module project without copy pasting dependencies?
  • How to make compose code readable without having infinite amount of (Rows and Columns)/(modifiers)?
  • How to reduce the amount of xml files in code to minimum?

Keeping all those questions in mind, I started working on my new pet-project.

To learn both FCM and RTDB, I decided to connect them and update my compose-ui on received notifications. It worked flawlessly because FCM worked on a much lower level than I initially thought.
With kotlin-reflect i achieved typesafe connection with RTDB more in server_driven_ui/logic.
To reduce the amount of dependencies the best thing that i discovered was build-logic from nowinandroid, to see more check build-logic.
I discovered constraint-compose, and it reduced my UI complexity, making my code much more readable and manageable because of fewer modifiers. I started to use Column/Row/Boxes with weight modifiers only to create small pieces of UI and at the end connect them with constraint layout.
To reduce the amount of xml files i managed the strings the same way as i did with themes, the same goes for icons, i could just simply redraw them using Compose-Canvas.
And finally thanks to voyager for navigation library, I learned a lot more than I originally expected by modifying and publishing it as fork.(from multi-platform projects structure and automation to recreation of ViewModel(ScreenModel), though I did not use ScreenModel in this project)

Samples

Update Secret Promotion Silent

Screenshots

App Screenshots

Features

  • Support configuration changes, even modified library to save backstack history for tabs in such cases, though I locked app in portrait mode.

  • Different notifications types with updating ui functionality.

  • Cashing everything using room.

  • 3 Different themes with Light/Dark mode support

  • Authentication with Firebase Ui

    Google Play

  • Download