(a). Kotlin Programming Language
We use Kotlin as our programming languge this time round. We’ve been doing a couple of Java projects of late but this app suites Kotlin as it(Kotlin) is the next generation programming language for android development.
As we do with almost all our projects, we want to to write high quality code using the latest design patterns. We will use Model View ViewModel which is the recommended pattern and is made possible by android architecture components.
(c). Firebase Realtime Database
The news articles will be stored in firebase realtime database. Featured Image URLs will be stored alongside the updates. We will see how to perform all CRUD operations against firebase.
(d). Firebase Cloud Storage
The featured images for our corona updates will be stored in firebase cloud storage. We will see how to perform CRUD operations involving images and text.
(e). Firebase Authentication
Yeah we will be authenticating our admins and editors using Firebase Authentication. This way we have control over who publishes/updates/deletes data. The app can be used by non-authenticated users but they can only read the corona updates. The app is designed to accomodate only a specific group of editors/admins. Therefore we’ve included the login component but no registration component. Admins/Editors are added at the Firebase console and not from the app itself. This makes it quite secure and avoids spam registrations.
You won’t be needing to login every time into the app. You login once only and the next time you come back we auto-sign you in even with no internet. If you sign out you would need to login again.
(f). Works even Offline
The app allows users/editors/admins to work even while completely offline. So an admin/editor can publish a news article while offline? Then how will the rest of the world read the news? Well the the moment the user regains a connection, the app will automatically publish it online as well.Meanwhile offline you can even make changes or even delete the news. If you delete it it won’t be published online. However if you select a featured image, we will automatically attempt to publish it online since we need image uploaded to the cloud storage and that is impossible if you are offline. So you can publish text while offline and when you regain connection, update it this time including an image. So in short, eveything works while completely offline apart from uploading of image.
(g). Endless Firebase Pagination
You will learn how to use firebase pagination. You can control the number of items you want fetched per page. In this case we use the endless pagination to stream in the live updates
(h). Search with Highlighting
You will also learn how to search and filter data based on a query. The search results are highlighted. We use a toolbar searchview, thus saving space.
(i). Sectioning By dates
Just like the Al Jazeera Live Corona Updates site, we will be sectioning our updates based on dates. For A section may be something like today,yesterday, tomorrow etc. We use a beautiful library known as karamba to provide intuitive date management.
(j). Latest Updates at the top
We show you how to organize updates using the latest-Top approach, that is the latest news coming at the top of the page. This feature may seem simple but with Firebase realtime database and when using Pagination, it is not obvious to implement because of known limitations of firebase realtime database.