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.