After several months of on-and-off work on my personal bicycle tracking app, I’ve decided to share my progress, the lessons I’ve learned, and the decisions that shaped the project.
As I mentioned in previous post, I initially chose to use the Multiplatform Compose library for Android. The goal of this library is to provide a unified approach for mobile multiplatform development. However, for creating a basic MVP, this level of support wasn’t strictly necessary. One downside of using Multiplatform Compose is that it adds complexity (as every library), especially if you’re developing your first mobile app. To simplify things, I switched to using Jetpack Compose, a library specifically for building Android apps, which made the development process more straightforward.
The dashboard is a simple React application that displays the user’s current location on a map. The main idea behind the personal bicycle tracker is to allow me to track my real-time location while cycling, using my Android phone. The app then sends the data to a server, so my family and friends can view my live location through the dashboard in a web browser.
For deployment, I chose to host the server API and the dashboard UI on AWS using Docker containers managed by ECS (Elastic Container Service). While this may not be the cheapest solution there are definitely more cost-effective options on AWS, such as using Lambda functions. I preferred this setup because it allows easy deployment to other cloud providers or any Docker-compatible platform.
Another key decision was to define the infrastructure using Terraform, which simplifies the process of creating and destroying the entire stack, enabling seamless management of the infrastructure.
This project is still a work in progress, and I’m excited to continue investing more time into it. The primary goal is to enhance my skills as a full-stack developer and gain deeper insights into the Kotlin ecosystem. So far, it’s been a interesting journey, even with the limited time I’ve had to dedicate to it.