Last weekend I took part in a competition called Hack For Good that took place all over Spain.
The goal was to create a technological product in 24 hours that had some social value. I went with my workmate @antoniosejas and made a team with three graphic design students (@LambAnthony @ronaldllumpo @samu814).
After some brainstorming we started developing fiblind. It is a social network you can access through a mobile app or using a web browser. It's goal is to help blind people gathering information of their surrounds.
This network feature audio snippets relevant to geolocated places. If you leave an audio note located on the front door of a museum telling that the place is a museum and what are the activities going on there a blind person could recieve that information while passing through just using a smartphone.
It's power resides on the crowd, these audio notes are created and consumed by the users of the application so anyone can post information as an audio note everywhere and the goal is to map every place with those snippets of information available to blind people.
That's the idea, now it comes the technical part.
We only had 24 hours and we wanted something impressive. Due to the characteristics of the idea it was almost mandatory ending up with a mobile application and a website, so we started looking for something modular, multi-platform and fast to develop with.
The project could be splitted in two parts, server and client. For the server part it had to be compatible with many different client applications so we decided to create a MongoDB database for storing the data, and a Node.js application on top of it. This application would create a REST API for the database in order to get and put information from any device that could make GET and POST requests.
The data would be queried and served using JSON format.
For the client part we were looking for something hybrid (mobile app+web browser) and fast. We chose Tako.js which is a framework I had been playing with for the last couple of weeks.
For all the geolocating and the geographical information representation we picked OpenLayers and OpenStreetMaps basically because I had also played with it before and because I like OpenStreetMaps for its open nature. Also it can be customized and there is a famous high contrast theme that would fit perfectly with the look of the rest of the application.
For the audio recording we used html5 WebRTC and the html5 audio player for listening to that audio.
Finally we used Phonegap to make the application out of the mobile website.
Meanwhile our desing team created a high contrast theme and a set of icons for the menus and the map.
We also bought some domains and created a Facebook page and a Twitter account.
The main problem I encountered was to retrieve the information from the database. This should be very easy to achieve but for some reason the responses from the API were coming empty. I struggled for like 6 hours with this and I got so tired that I had to sleep for some hours before continuing with the developement.
The responses were coming empty because the petitions were considered as cross-domain requests even that the server and client applications were running in the same server machine because they were using different ports so the cross-domain policy is applied.
There were few hours left and we integrated the graphical look on the css as fast as we could and completed the 0.1 version of the app+website. It was fully functional but it had html5 compatibility issues on some devices and also we encountered a problem while dealing with encoding and decoding the audio data on the JSON request format. Sadly there was no time left and we had to stop developing.
The judges and participants liked our application and we got two awards, one to the graphic design and the other to the potential of the idea so our project has been accepted into a startup incubator in order to continue with it.
It was an awesome experience, everything was really well organized and the challenge was super interesting. The worst part for me was not having much time to interact with the other participants because I was really focused on my task, there was a lot of interesting people there I hadn't the time to talk to.
Anyway, awesome experience, awesome challenge, and I recommend everyone to participate next year or in any other challenge of this nature. You won't regret it!