Skip to content
Android app for the first ever Android Developer conference-droidcon in Nairobi 2018
Kotlin HTML JavaScript Java
Branch: master
Clone or download
wangerekaharun Merge pull request #31 from droidconKE/dependabot/npm_and_yarn/functi…
…ons/lodash-4.17.14

Bump lodash from 4.17.11 to 4.17.14 in /functions
Latest commit c94517b Jul 12, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app migrated whole code base to kotlin May 23, 2019
functions
gradle/wrapper migrated whole code base to kotlin May 23, 2019
.firebaserc removing .idea files Sep 29, 2018
.gitignore migrated whole code base to kotlin May 23, 2019
CONTRIBUTING.md Update CONTRIBUTING.md Dec 17, 2018
FIREBASE.md Update FIREBASE.md Jun 26, 2019
LICENSE removing .idea files Sep 29, 2018
README.md Update README.md Dec 16, 2018
build.gradle migrated whole code base to kotlin May 23, 2019
firebase.json removing .idea files Sep 29, 2018
gradle.properties migrated to android x, update the branch with features from the maste… Dec 17, 2018
gradlew removing .idea files Sep 29, 2018
gradlew.bat removing .idea files Sep 29, 2018
schedule.png
settings.gradle removing .idea files Sep 29, 2018

README.md

droidconKE Android App

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.

Source

The source code in this repository reflects the app as of droidconKE 2018.

Features

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

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

Schedule screenshot

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 writeup(UI Improvements, Event Reservation Feature,Starring Session Feature etc)
  • CI/CD Setup
  • Offline First Architecture Improvements

License

MIT License

Copyright (c) 2018 droidConKE

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

You can’t perform that action at this time.