in blog

The dissection of an Android App: Open-sourcing it.

Find the code for the app here:

Back when I was still wasting my life educating myself at the university, I spent a big part of my last months, developing a complete Android app as my Undergraduate Thesis.

The reasons were two: First of all, the submission of a thesis was equivalent to passing three (and a half) normal courses – and since I hated most of my department’s courses, the choice was easy. Secondly, I always wanted to learn (good) Android development, and this seemed like a great opportunity to hone my Java skills.

Thanks to a great teacher that accepted my proposal “to create something very practical” for my thesis, I came in contact with the Public Relations department of my University. There, they asked me if I could make an app to help the incoming and outgoing Erasmus students of the university.

The process of applying to join the Erasmus programme was infamously complex, and until that moment was only explained in some web and printed sources. We believed that a dynamic application could help the student understand and manage the whole process more efficiently, remind them about the deadlines and, also, give important information about the users back to the Public Relations department.

Based on discussions that we had, we decided on a general design for the app, which included the following functions:

  • It would “profile” each user, and adapt its content accordingly. For example, if the user was an outgoing Erasmus student, he would see different steps than the incoming one.
  • Then, it would provide the user with an up-to-date series of steps, to complete their application. The steps would be easily upgradeable, and presented in a to-do list UI.
  • There would be notifications for deadlines.
  • User data and preferences would be “uploaded” to the department of Public Relations.
  • It also had maps. Mostly to show where one had to go to apply etc.

Other than that, I wanted the app to be fully adhering to the Material Design guidelines, to be easy on the eyes, fast and to work on as many screen factors as possible.

Also, the app would be ultimately  released to the public – that is to real students of the University. The reasons why this didn’t happen (at least until today) reside somewhere between known and unknown for me.

In my opinion, in every similar undertaking, one of the most important things its creator should know, are his “limitations”. Even if you are an entrepreneur, an artist or a developer, it’s mostly your limitations that define what you are able to create.

As far as this specific project was concerned, my main limitations were time and lack of experience (on Android). Mostly because of the time limitation, between any two possible solutions to a problem, I almost always must chose the simpler one, even if the other one seemed sexier.

Open-Sourcing it.

To develop something like this, giving your heart and time to it, polishing it and testing it, only to leave it hidden in the forgotten depths of GitHub, it’s not a nice feeling.

Yesterday, I saw that the European Commission itself released a similar app for the Erasmus programme. The app was definitely funded for tens of thousand of euros, but still, was lagging in my last-gen phone.

Anyway, since these days I mostly work on other things, I saw this as a good opportunity to revisit my lovely old app, explain my design choices (and limitations), share some of my little knowledge on Android development, and maybe help some new developer to understand “how Android works”, just how I trying to back then.

At this point, almost a year after the end of this app’s development, I’ve certainly grown as a programmer. But, still, I believe that this Erasmus Guide App had a certain reason for existing, and could definitely be a useful tool for the applicants.

Concerning the source code, I believe it also has some value, mostly to beginner Android developers. That’s because, while being an app with a very specific purpose, it implements a great percentage of Android’s capabilities. And, most of the times, everything is coded to work in the simplest way possible I also remember spending a lot of time for keeping the code clean and refactored.

For this reason, I decided to open source it, and explain its components in a series of posts, along with how they ended up being like this.

You can find the full source code here: I have taken out some things like the Maps API Key, but the code is immediately compilable for Android 4.0+.

In the next posts, I will try to specify the most interesting parts of the code, and explain how they work.

See you at the comments.