Tweet
I am using Room as a single source of truth with one-to-many relation to get member with locations

Then I easily call just one function from Dao and mapping is already done automagically

No SQLDelight yet even though this is KMM ๐Ÿ™ˆ

#AndroidDev #Kotlin #buildinpublic
Day 66 of #100DaysOfCode & #buildinpublic

I refactored majority of client side code to support multiple locations/devices per group member

There is still lots to do but code compiles for now and that is a huge win ๐Ÿ˜…
Day 65 of #100DaysOfCode & #buildinpublic

Today I started adding support for multiple devices so every group member can share location from more than one device

It is the last feature with breaking changes to current app structure so after that I can finally focus on iOS
Day 64 of #100DaysOfCode & #buildinpublic

Today I was improving group places and group detail page

I added new map pin for places so places are also visible on main map - tapping on place pin will open place detail
Day 63 of #100DaysOfCode & #buildinpublic

Today I migrated Appwrite to v1.1.1, getting used to new console๐Ÿ‘Œ

I noticed that my error reporting is not really reporting any errors, so after shamefully long debugging session I found that I didn't copy GlitchTip DSN key properly๐Ÿคฆโ€โ™‚๏ธ
Day 62 of #100DaysOfCode & #buildinpublic

Encrypted data preview is now done

I had to refactor few other screens as well to accommodate this

Coding every single day is now becoming a habit, I plan everything else around the fact that I have to complete the daily challenge ๐Ÿ’ช
Day 61 of #100DaysOfCode & #buildinpublic

I am still refining encrypted/decrypted preview feature

Group details and group member now have this option too

Tomorrow I'll polish and finalise the UI of this screen
Day 60 of #100DaysOfCode & #buildinpublic

Today I started with feature to preview raw encrypted data stored at server for power users ๐Ÿ˜…

Logic is ready + suuuuper basic UI to preview group place for now

It adds a bit of transparency to see what is actually on server
Day 59 of #100DaysOfCode & #buildinpublic

Today I updated few libraries and added settings and app info screen to Android app

I also added screen to list third party licences and libraries
Day 58 of #100DaysOfCode & #buildinpublic

I finally finished adding error logs to server functions

I had to refactor all 18 of them a bit to properly use logger, but after bit of playing around with output in GlitchTip it works great now

Also I setup email alert is in place
Day 57 of #100DaysOfCode & #buildinpublic

I am planning to add some error/crash monitoring to server side so I catch critical errors on time

I am exploring amazing Coolify by @andrasbacsai and GlitchTip error monitoring

Super easy setup so far on Hetzner VPS๐Ÿ‘Œ
Day 56 of #100DaysOfCode & #buildinpublic

User member data (name and image) is stored and encrypted for each group separately

But when user updates profile image or name in account settings, that data in all groups should update as well

Well, from today it does ๐Ÿ˜…
Day 55 of #100DaysOfCode & #buildinpublic

To join other groups, user has to create and share a 8 digit code, which expires after some time

Today I implemented logic that will periodically clean up all expired codes plus whenever codes are fetched, expired ones will be deleted
Day 54 of #100DaysOfCode & #buildinpublic

I realised today that realtime events were also triggered when new member is added to a group while sharing location

That then spawn bunch of identical, unnecessary network calls which I fixed now

Realtime turned out to be real PIA ๐Ÿ™„
Day 53 of #100DaysOfCode & #buildinpublic

Nothing fancy today, testing and polishing previously built key rotation improvements

Looking good so far ๐Ÿ‘Œ
Day 52 of #100DaysOfCode & #buildinpublic

I added much better logic and finished with improvements for key rotation on app side

Tomorrow -> testing

It is awesome that everything is in shared module with #Kotlin Multiplatform so both iOS and Android are using same crucial code
Day 51 of #100DaysOfCode & #buildinpublic

Today I started with some optimisations for group and member key rotation on app side

Because of various realtime events sync is triggered multiple times in a row and sometimes keys are missing for a fraction of a second
Phew, it is day 50 of #100DaysOfCode & #buildinpublic - half way there

I never worked on a side project for such a long time without a break. This is really pushing me to do build every day

Today I added some improvements to make group key rotation synchronous on server side
Day 49 of #100DaysOfCode & #buildinpublic

I was doing more testing today and I figured out one syncing "bug" - group key rotation would triggered multiple times if member was removed from a group and all members are sharing their location

I'll have to work on this tomorrow
Day 48 of #100DaysOfCode & #buildinpublic

I am still playing/testing/debugging/fixing/breaking/messing with sync issues when system is under stress

I had to take a step back so I reverted few commits and am adding pagination to one one server function at a time