After a long pause and well deserved vacation I am back on building Paralino

I feel like it's gonna take some time to pick up where I left 😅 but to start it easy I created simple plan and bunch of tasks for next few weeks

🎉🥳 Day 100 of #100DaysOfCode & #buildinpublic

Today I moved more code to Kotlin Multiplatform shared module and started preparing iOS version

More than 80% of codebase is shared, rest is #Android

And I am absolutely amazed by the progress I made thanks to this challenge 🤯
Day 99 of #100DaysOfCode & #buildinpublic

Today I updated all libraries and SDKs to latest versions and did all necessary migrations + moved #JetpackCompose to BOM to make versioning easier

Snackbar in Compose doesn't have native swipe-to-dismiss gestures so I hacked one up 😆
Day 98 of #100DaysOfCode & #buildinpublic

Merry Christmas Twitter 🎄

Had a very narrow window today to complete the challenge and i did it 🙌

I added network observer and error banner if user wants to share location but is offline

I ping api directly to ensure reachability
Day 97 of #100DaysOfCode & #buildinpublic

Today I debugged and fixed realtime events on my brother's phone and finally finalized code obfuscation

I have to persevere and be super efficient today and tomorrow, holidays are here but I only have few days of challenge left 💪
Day 96 of #100DaysOfCode & #buildinpublic

More code obfuscation today - realtime events are not working and GlitchTip reports some weird errors

Even after adding ProGuard rules to 30+ apps it always feels like I am doing it for the first time 😅
Day 95 of #100DaysOfCode & #buildinpublic

Today I added rules for ProGuard/R8 on #Android

Still randomly crashing when syncing push token for some reason, but everything else seems to be OK, will continue tomorrow

For now my universal APK went from 90 to 40 MB in size 💪
Day 94 of #100DaysOfCode & #buildinpublic

More polishing to custom push notification solution today

I now use CoroutineWorker on #Android side to fetch and process pending push notifications

It is more reliable and stable for such task especially when app is inactive
Day 93 of #100DaysOfCode & #buildinpublic

Today I adjusted push notification processing on app side

Now whenever push is received from FCM or APNs (always empty push), app fetches push notifications from server and delete the ones that are shown to the user

Day 92 of #100DaysOfCode & #buildinpublic

Today was custom-push-notifications-backend-integration day 😅

Whenever there is a push to be sent, new notification document is created

Also created new function that runs periodically to clean up expired notifications
Day 91 of #100DaysOfCode & #buildinpublic

Today I started working on custom push notifications which will allow for even more privacy for users 🙌

For now I will send empty payload through FCM and APNs and app will fetch push notifications directly from server
Day 90 of #100DaysOfCode & #buildinpublic

Today I added device info to user on map if user has multiple devices

Love how easy it was to use inline content in #JetpackCompose to append device name and icon to user name in different style 👌
Day 89 of #100DaysOfCode & #buildinpublic

Today I switched from Room to Preferences DataStore to cache encrypted user key

I need to have the option to listen for key changes but since there is only one key for user it doesn't make sense to use full Room table just for that
Day 88 of #100DaysOfCode & #buildinpublic

After a bit more testing and few improvements I finished session management today

Also I am gonna do a bit planning now and create more tasks for next days/weeks
Day 87 of #100DaysOfCode & #buildinpublic

Who's got awesome user session management logic in their app?

This guy ☝️😎🤣

I am now checking response codes and reasons from Appwrite to logout user right away - clean up local data, stop all processing and go back to login screen
Day 86 of #100DaysOfCode & #buildinpublic

I decided to postpone onboarding feature since it is a "nice to have" but not a must for a first version

So instead I am working on user session management in app to have better control when user session expire or keys are missing
Day 85 of #100DaysOfCode & #buildinpublic

After a few days of just testing and improving location sharing I have a better overview of what needs more improvement

Everything actually works quite well - I mostly need more fancy stuff like user onboarding and usage instructions
Day 84 of #100DaysOfCode & #buildinpublic

I didn't "create" anything yet another day, but am still working out kinks and debugging real world usage bugs I found

It still feels like a progress though 💪
Day 83 of #100DaysOfCode & #buildinpublic

Today I declared a war against all them bugs and crashes I got from GlitchTip

I was testing only with 2 close family members on few different devices but still ended with decent backlog

I probably only covered 10% reports today 🙈