Hey everyone,
Over the last few months, I’ve been working on a side project called WalkLog — an open-source walking tracker app for Android.
I originally started it as a small learning project, but it slowly turned into my attempt at building something closer to a real-world Android application instead of another simple demo app.
One thing I especially wanted to focus on was architecture and maintainability as the project grew.
Instead of putting everything into a single module, I experimented with a more modular structure using:
- Kotlin
- Jetpack Compose
- Room
- Hilt
- WorkManager
- Health Connect
- Glance Widgets
Some things I learned while building it
Managing UI state in Compose gets harder as apps grow
At first, state management felt simple, but once features started increasing, keeping UI state predictable became much more important.
Separation of concerns really matters
Splitting responsibilities between data, domain, and presentation layers helped a lot once the project became larger and harder to manage.
Glance widgets were trickier than expected
Building widgets with Glance was honestly more difficult than I expected, especially around state synchronization and update timing.
Background work introduces a lot of edge cases
Step tracking and periodic background updates introduced many cases I hadn’t considered before.
Still improving
There’s still a lot I want to improve:
- testing
- performance
- architecture cleanup
- UI/UX polish
But overall, this project helped me learn a lot about building larger Android apps.
GitHub
GitHub: walklog
The README also includes some additional information about the project structure and architecture.
And if you find the project interesting, I’d really appreciate a GitHub star ⭐
Feedback is always welcome — especially from more experienced Android developers.
Thanks!

Top comments (0)