- 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?
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)
Update | Secret | Promotion | Silent |
---|---|---|---|
-
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