Building .droidconKE Android app

Harun Wangereka
3 min readDec 16, 2018

Android app for the first ever Android Developer conference-droidcon in Nairobi 2018

This project is the Android app for the conference. The app supports devices running Android 5.0+, and is optimized for phones and tablets of all shapes and sizes.

Playstore Download Link

Features

The app displays a list of conference events — sessions, office hours, app reviews, codelabs, etc. — Users can see details about events, sessions and other event details

The app also displays a map of the venue and shows informational pages to guide attendees during the conference.

.droidconKE android app

Development Environment

The app is written in Java and Kotlin and uses the Gradle build system.

To build the app, use the gradlew build command or use "Import Project" in Android Studio. A canary or stable version >= 3.2 of Android Studio is required and may be downloaded here.

Architecture

The architecture is built around Android Architecture Components.

We followed the recommendations laid out in the Guide to App Architecture when deciding on the architecture for the app. We kept logic away from Activities and Fragments and moved it to ViewModels. We observed data using LiveData

We used a Repository layer for handling data operations.droidconKE’s data comes from a few different sources — user data is stored in Cloud Firestore (either remotely or in a local cache for offline use), user preferences and settings are stored in SharedPreferences, conference data is stored remotely and is fetched and stored in memory for the app to use, etc. — and the repository modules are responsible for handling all data operations and abstracting the data sources from the rest of the app (we liked using Firestore, but if we wanted to swap it out for a different data source in the future, our architecture allows us to do so in a clean way).

Firebase

The app makes considerable use of the following Firebase components:

  • Cloud Firestore is our source for all conference and user data. Firestore gave us automatic sync and also seamlessly managed offline functionality for us.
  • Crashlytics allowed us to detect bugs and catch errors.
  • Firebase Cloud Messaging let us inform the app about changes to conference data on our server.
  • Remote Config helped us manage in-app constants.
  • Firebase Authentification helped us to provide easy and secure authentification using email.

Work in Progress

  • Rewriting .droidconKE app in Kotlin and taking advantage of kotlin features like coroutines,kotlin android extensions etc
  • Version 2.0 features write up(UI Improvements, Event Reservation Feature,Starring Session Feature etc)
  • CI/CD Setup
  • Offline First Architecture Improvements

Feel free to open issues if you find problems or want to contribute to the project!

--

--

Harun Wangereka

Google Developer Expert for Android | Android Engineer | Co-organizer droidconKE, Android254 & Kotlin Kenya | Android Author @raywenderlich.com