← Back to Posts

Trams, Graphs and how my app reached 400 users

May 1, 2023

It was a sort of sunny afternoon early last week when I decided Iā€™d post the Manchester Trams app to the r/Manchester subreddit. At first, I thought itā€™d get a couple upvotes and disappear into the abyss like most posts on Reddit.

I made a short post simply listing a few of the features of the app and the link to the Play Store page, and returned to my day. About 10 minutes later, the first comment came in and it was relatively positive. ā€œSuccessā€ I thought, Iā€™d managed to get at least one new user on my app.

10 minutes later another comment came in, and then another, and anotherā€¦

Throughout the evening and next day, people were leaving positive comments left, right and centre; many of them were kindly reporting bugs I should fix and suggesting improvements too. The response from the post over the first 36/48 hours was unlike anything I was expecting, and it felt great to know so many people found the app useful and would start using it.

The Analytics

By the time the dust had settled, the post had over 50K views, nearly 250 upvotes and over 85 comments (though roughly half were probably me replying to commenters šŸ˜…).

But how did this translate to the app itself?"

Once the Play Store analytics had updated, the appā€™s downloads had doubled from ~300 to over 600, with an active user base (people who didnā€™t uninstall straight away) of 400 users from 180 which is awesome šŸ˜Ž

https://twitter.com/Dmdboi/status/1651274395015614464

Whatā€™s next?

Iā€™m now responsible for an app with > 400 users which means that I need to continue to maintain and improve it so they donā€™t get mad at me, so whatā€™s next?

I combed through the reddit comments, and a few messages Iā€™d received elsewhere and made a list of things people had mentioned; bug, improvement, or them wanting an iOS app. The majority of the list being bugs that I needed fixing.

Iā€™ve already started fixing the bugs people mentioned, but I got stuck on the ā€œFix Find Journeyā€ bug which leads me onto the next part of this article.

Graphs

I spent 4 hours playing around with graph data structures to build a better journey planner. Let me explainā€¦

Originally, the Find Journey feature would take two stations and return an array of stations between them. If the end station was on a separate line, Iā€™d direct users to Cornbrook (the station with the most lines) and tell them to change to a tram on the right line. This worked great for the journeys that I take the most, but users were reporting that a number of journeys werenā€™t showing correctly or the feature broke completely for them.

So I returned to the drawing board on the Journey Planner and remembered that when I first added a beta version of the feature Iā€™d heard about Graphs so I decided to take a deeper look.

In simple terms, a graph contains nodes and edges that connect nodes to each other together. If youā€™ve ever used Directions on Google Maps, the system behind that is a graph structure, where junctions are nodes and roads are edges. Using algorithms such as Dijkstra algorithm, we can perform operations on the graph to determine the shortest path between two nodes.

After reading about graphs and how they worked, I looked for an NPM package for the Trams API and began testing. Several hours later, I had a very basic prototype working which Iā€™ll add in the next update of the app.

Conclusion

Overall, the response to the Manchester Trams app has been incredible and I now know whatā€™s next for the app. Iā€™ve been busy working away at fixing bugs and adding new features, as well as a top secret feature but more about that in the future.

Leave a comment!