Starting Out: Building an Events Application
The motivation
I have long been pissed at facebook. Partly because it keeps people, including myself, in an infinite death scroll whenever they decide to open the app. But primarily my problem with facebook is that it still have a few features which no one have managed to do better, or at least have not been successful in poaching the users to their proprietary platform. This in turn forces people, such as myself, to stick with facebook even though they don't particularly enjoy using the platform. I am talking about groups and events. Now, I am aware that there are alternatives out there - groups.io and eventbrite are good examples. However, I want to start a project to challenge myself to learn languages and technologies I have either not used before, or just want to get more practice using, and I am bringing you along for the ride!
The concept
I want to build an application for events. This is not supposed to be an app for companies and people who want to manage their events, but rather an app for finding public events near the user and creating private events for friends and family.
The purpose is to make it as easy and simple as possible to find, filter and plan attendance to any event in your vicinity, or even plan ahead when travelling.
Choosing the technologies
Hey, that sounds really cool, Alexander! What technologies are you going to use for your application? I'm really glad you asked! The answer is that we're about to find out together. To make it easier to select the appropriate technologies, first we should look at some general requirements and scope of the project, which will be the extend of this article. Once we have a better understanding of the extend of the project we will define the business and user requirements. When we have these we can deduct what is required of the system, choose our technologies and create the appropriate system design. Let's get into it.
Scope
The project is limited by the fact that I am only one person working on the project, and the focus is to build something that is realistically finished. Therefore it is important to limit the features and complexity of the system. I still want this application to work across both iOS, android and as a web application. Therefore it could be beneficial to choose a cross-platform technology for the UI part of the application. If not, the application should be easily portable into other platforms. Realistically, most people would get the greatest benefit from using their smartphones for the functionality of the app, so this should be prioritised.
For server-side, I want to make an exposed api which can handle users, and create, read, update and delete events (CRUD), including geotagging, tags and other meta data about events. The server-side should be kept simple with as low complexity as possible. It should also be hosted on a suitable cloud service because I don't want to deal with the hassle and unreliability of having a server rack in my closet.
There are many frameworks out there intended for getting started easy with your api, all of which include varying amounts of of boilerplate code. In order to choose the right framework, we need to consider our needs and requirements, such as performance, built-in features and third party libraries, documentation and support. Keep in mind that, as I have mentioned, I am going to choose frameworks and technologies/languages that I have not used before or want more experience with.
UI
The UI technology used should either be easy to port to iOS and android, be cross-platform by nature, or be a hybrid web app, as most people would have most use of it on their phone (Think of finding an exhibition "near you"). I am not going to develop a native application for iOS and one for Android because of time and resource constraints.
The UI will be a simple search/filter page for finding events near the user, and should integrate a map for plotting the events, and making the overview better for the user.