Skip to content

Material 3, MVVM Kotlin Coroutine, Compose, REST API, Ktor, Room, DaggerHilt

Notifications You must be signed in to change notification settings

goodluck3301/Giphy

Repository files navigation

Giphy

This sample Android app presents the Giphy trending animated gifs for sharing or download. You can now also search animated gifs by keyword.

 


 

High level architecture

  • Kotlin
  • MVVM & clean architecture
  • Jetpack Compose - Single Activity
  • Kotlin Coroutines and Flow
  • Dependency Injection using Dagger Hilt
  • Material 3 dynamic colour theming supporting light and dark modes
  • Dynamic screen layout support using Windows Size Class
  • Gradle Kotlin DSL and Version Catalog
  • Macrobenchmark and Baseline Profile
  • Full unit test and UI (Journey) test suite

 

Major libraries used

Dependencies

Plugins

 

Building the App

Requirements

 

Setting up the keystore

Release builds will be signed if either the keystore file or environment variables are set. Otherwise, the app will be built unsigned and without the Giphy API key installed, which will not pull any data from the endpoint.

Local

  • Android Keystore is not being stored in this repository. You need your own Keystore to generate the apk / App Bundle

  • If your project folder is at /app/giphy/, the Keystore file and keystore.properties should be placed at /app/

  • The format of keystore.properties is:

       store=/app/release-key.keystore
       alias=<alias>
       pass=<alias password>
       storePass=<keystore password>
       giphyApiKey="<your API Key here>"
    

CI environment

  • This project has been configured to support automated CI builds.

  • The following environment variables have been set to provide the keystore:

       BITRISE = true
       HOME = <the home directory of the bitrise environment>
       BITRISEIO_ANDROID_KEYSTORE_PASSWORD = <your keystore password>
       BITRISEIO_ANDROID_KEYSTORE_ALIAS = <your keystore alias>
       BITRISEIO_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD = <your keystore private key password>
       GIPHYAPIKEY= <your API Key>
    

Build and install on the connected device

This app has two build variants: Debug and Release. The most common build commands are:

  • ./gradlew clean installDebug
  • ./gradlew clean instal
  • ./gradlew clean bundleRelease
  • ./gradlew clean assembleRelease

The generated apk(s) will be stored under app/build/outputs/