In my last post, I have described one of my ideas for a project that I could try to develop for "Get Noticed!" competition. It is something that I would use personally on daily basis, so it really makes me want to do it. If you haven’t read about it, head to part 1 to check it out. But there is also another project that I have in mind, unfortunately, this one is not so well planned as the first one. Here’s what it is about.
I think that most of you know what Public transport is, trams, subway, buses that can get you from one part of the city to another one. The problem appears, when you don’t know which tram or bus to take, and where you have to change to another so that you could get to your destination. Another important aspect is time. You may want to know how much time your commute will take, or maybe when you have to leave to catch a bus that will get you somewhere at the certain time.
I live in Warsaw, we have here a pretty big public transport network, with buses, trams, subway and suburban trains, that makes a pretty complicated network of connections. Of course, we also have a fair share of traffic jams, like every bigger city, to make things more complicated.
What to do with this?
The solution to the problem above could be a mobile app, that lets you choose a destination with an optional time of arrival and just tells you how can you get there and how long will it take. Of course, it should be also possible to select starting place and not use your GPS localization or select the desired time of leave (including choosing another day). Maybe it could even let you set few destination points that you want to get to during a day and have the app plot the fastest route through all of them. Found route should be also nicely shown on a map with all important information like times and required bus changes. App should also have a more informational only mode, so for example, you are at a bus stop, you know which line to take and you want to know when the bus will come. The tricky part of this is that there are traffic jams and it would be cool to somehow take them into account in time calculation.
To make this happen, I will have to create two things here. First an Android app with all the features above, possibly with Butterknife, Dagger2, MVP, RxJava, Retrofit etc., just like in the first project. Accounts may be also useful, but not required, so also Firebase may have its use here. The most important part of this project will be a mechanism to find the desired route. That’s the biggest challenge. Here I would want to try to use a graph database, Neo4j. I think that modeling all those connections as a graph may be a good idea, but it may also be a very bad idea, I don’t know, I haven’t used a graph database yet. And of course I have to host this service somewhere, so it could be good opportunity to play some more with Docker and cloud services, maybe some AWS, Azure, Google Cloud, Heroku or something else.
With this app, there is also a possible use for a web app that does all the stuff that mobile app do, so I would also get a chance to learn Angular 2 too if I choose to make a web version.
I haven’t decided yet which one I will try to do, maybe even some other idea will occur to me, but when it happens, I’ll write about it for sure. There is still a lot of time to decide, so we will see.