Devlog – Building a mobile app from scratch

My current project is an event-based mobile app that will allow anyone to create and organize an event publicly or privately. It sounds pretty basic, and the core idea of it is I guess – it’s just publishing events like every other provider such as Facebook, Eventbrite, Meetup etc. However the difference with my project is that I will enable hosts of events to customize the events to their liking, and (hopefully) my application will be able to provide suggestions or alternative places as the venue, as well as voting systems and a chat for each event. It’s a lot of work to do for a college project but it is my final year so I’m aiming to impress.

I started over 4  months ago with nothing but a few blank Activities in my app and the template code for a .NET Web API project as my back-end service. I started off on what is usually the most awkward part of an application – the Authorization and Authentication of users. I was hoping to use the ASP.NET Identity system as it makes a lot of things much easier, but soon realized that it would be difficult to do so without a session as the Android app communicates with the server using only RESTful services. After trawling through numerous tutorials on how to register and verify users via a username and password I finally came to a solution by using Tokens provided by the Web API to authorize each request to the server. At this point I had the Android application communicating to a web service hosted on a server in Azure, which was also in contact with an Azure SQL database. This was all done using the Volley library for Android which I would recommend over Apache HTTP libraries as it cuts down on the code quantity and simplifies requests, but it can be expanded on (such as my use by added an authorization header)

From there I began getting a feel for the APIs I would be using in the project. Google Maps, Places, Nearby (really cool, check it out!) Cloud Messaging were just a few of the APIs I was planning to use, so I got going on some basic implementations of them. Other than the Async callbacks with Maps and Places I had no real problems with them, GCM was extremely easy, and Nearby is working but not 100%. Nearby lets users publish small packets of data, and other users listening can pick up these packets by using bluetooth, inaudible audio, WiFi etc. I was pretty freaked out by it but it worked so I left that to the side while I done some much needed UI improvements.

Following Material Design as best as I could, I continually worked on the aesthetics of the app to make it look better than it did and I’m quite happy with it at this stage. Obviously there’s more to be done but it’s acceptable now. I added Push Notifications to the app so users would be notified when another user followed them and I have it planned to do the same when a user RSVPs to an event. I’ve also used Android Data Binding – something that I only found out about from the latest Android Dev Summit and I really enjoy using it. It gets rid of the awfully (castToType) findViewById(R.layout.view) code which is usually riddled throughout the onCreate of many apps.

And now after that very brief recap of my work up to now, I find myself here, still working away to add more to what I hope will someday soon become a useful app for at least 1 person. I’m hoping to do a weekly update for my Devlog on this project of mine and I’ll also finally get around to re-doing this awful website. Thanks for reading, you can follow me on Twitter @marklordan