Have you ever felt a need to receive instant notification, documents, news and announcements from your college directly to your mobile phones. What could be done? What is a perfect solution?
When this requirement popped up in my college. I came up with a solution. That solution is Notix. An instant notification platform that send a message, document, announcement, news or any other stuff which is required by the student of the college. It was a great project to work upon using the best in class technologies and our very own GCM (Google Cloud Messaging).
This application has been completely designed keeping in mind all the important aspects which is required to make a scalable application. I have used a distributed design pattern for the development of this application keeping in mind the scalability factor and to make it manageable as it expands. By removing the implementation aspect into a completely different layer, I have managed to create a robust infrastructure that can be managed efficiently.
Service Oriented Architecture
Imagine your daily life situation where you go to a shop. You ask for the items and the storekeeper provides you with that. The only difference here is that the shopkeeper will ask you for your identity and authenticate you each time you go to buy some items. The same thing happens here. Each and every request sent to the server is handled by the service layer, which then authenticates the request and provide the requested data from the applications to the client.
The main reason for choosing this architecture was that I wanted to create an application which will be free from vendors, products or technologies. Therefore, by creating a service layer in between I was able to achieve that. This service is a discrete and independent unit of functionality which can be accessed by anyone and from anywhere. Follow the link to read more about the architecture here.
We made use of the REST API. REST stands for REpresentational State Transfer is a way to provide interoperability between different nodes in a network. It follows stateless protocols and therefore provides additional security to the overall system. Each request is served as a new request, therefore, each time user sends a request it is authenticated against the system.
The Notix Website
To create and manage notifications, there was a need of a platform which can be accessed by everyone from anywhere. The obvious choice for this was an MVC framework that can scale up easily and we straight away went for the Codeigniter. It was the first choice because of its light footprint on low cost server instances.
As this application uses a service based architecture therefore, providing data to the mobile application was very efficient. The notification delivery is entirely handled by Google Cloud Messaging (now, Firebase Cloud Messaging). An always-on GCM instant listens to any new notifications posted by the faculty on the website and subsequently performs the tasks ahead to deliver those notifications to the Android devices of the students.
Delivering push notifications on a Phonegap based app is not possible without the Phonegap Push Plugin. This plugin allows the app to register a background service on the device, that can listen to GCM’s pings and receive the payloads. It can even create the notification based on the payload received. So this payload has to be organized specifically on the server-side to properly create notifications on the notification panel of an Android device. You can read the plugin’s documentation on its payloads, here.
The design for this website is made of reusable CSS class components along with helper classes to quickly lay down the pages. We created several views for the faculty to easily manage the notifications and views for the Admins. To bring a consistent look and feel, the SCSS was used along with BEM methodology, which greatly streamlined the overall UI design process for the website. The components (CSS classes) were reusable which allowed us to quickly create the website.
Here’s the link to the website: http://hcetnotix.azurewebsites.net
Final Thoughts
All the programming and architecture design was done by me and my friend in which the UI part was done by my friend and rest of the core coding part was done by me. I remember the night before the presentation. My friend and I were fixing bugs. We were constantly in touch via Slack and fixing up website and application at the same time.
Anyways, we learned a lot about the implementation of the Push Notification and API development. Our experience with the Scalable Design Patterns did came handy while crafting the application.
And as always,
Be my aficionado 🙂