Skip to content

kriticalflare/SIESGSTarena-android-app

Repository files navigation

Android client for SIESGSTarena

CI GitHub license

Built with the best of Android Jetpack with a focus on clean architecture and providing a feature-packed, offline first experience.

Screenshots

Project Characteristics

  • Offline first app
  • Data is synced periodically in background so that latest data is shown even when offline
  • Push notifications
  • App shortcuts
  • Widgets to keep track of contests at a glance
  • CI using github actions
  • Linting using ktlint
  • Reactive UI
  • Single source of truth
  • Dependency injection using koin

Built With 🛠

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - Coroutines is the Android team's recommended solution for asynchronous programming on Android
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • ViewModel - ViewModel is designed to store and manage UI-related data in a lifecycle conscious way which allows data to survive configuration changes such as screen rotations.
    • LiveData - LiveData is lifecycle-aware observable data holder class for communicating between viewmodel and the view
    • ViewBinding - Generates a binding class for each XML layout file present in that module and provides a type and null safe way of interacting with views.
    • WorkManager - WorkManager makes it easy to schedule deferrable, asynchronous tasks that are expected to run even if the app exits or the device restarts.
    • Room - The Room persistence library provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.
    • Navigation Component - The Navigation Architecture Component simplifies implementing navigation, while also helping you visualize your app's navigation flow.
  • Koin - A pragmatic lightweight dependency injection framework for Kotlin
  • ThreeTenABP - An adaptation of the JSR-310 backport for Android.
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Firebase Cloud Messaging - FCM is a cross-platform messaging solution that lets you reliably send messages.
  • Moshi - A modern JSON library for Kotlin and Java.
  • Moshi Converter - A Converter which uses Moshi for serialization to and from JSON.
  • Material Components for Android - Modular and customizable Material Design UI components for Android
    • Material Motion - Uses Material Motion from Material Components for meaningful transitions and animations that helps the user navigate

Architecture

The app uses MVVM (Model View View-Model) architecture.

Building

You can either fork the project or clone it by running the following command in terminal

$ git clone https://github.com/kriticalflare/SIESGSTarena-android-app

Install Android Studio

Download and install Android Studio from here.

Import the project into Android Studio.

When Android Studio starts up, you will be prompted to create a new project or import an existing project. Select the import an existing project, navigate and select the directory where you cloned the project.

Add firebase to your app

The app uses Firebase Cloud Messaging for the push notification functionality. To build the app successfully, you will need to create a google-services.json using the firebase documentation

Contributing

Please read the contribution guidelines at CONTRIBUTING.md.