/gif-app

An Android application showing animated stickers, built using jetpack compose, Giphy's REST API and other modern Android technology stacks and the MVVM architecture.

Primary LanguageKotlinApache License 2.0Apache-2.0

Gif App


Gif App is an Android application built using jetpack compose and other modern Android technology stacks and the MVVM architecture. The application just shows animated Stickers from Giphy's Rest API


License API Build Status

Screenshots

Download

Tech stack & Open-source libraries

  • Minimum SDK level 24
  • 100% Kotlin
  • Coroutines + Flow to simplify code that executes asynchronously.
  • JetPack
    • Compose - A modern toolkit for building native Android UI.
    • Hilt - for dependency injection.
    • Lifecycle - dispose observing data when lifecycle state changes.
    • ViewModel - UI related data holder, lifecycle aware.
    • Room - to construct database and persist data more easily.
    • Paging 3 - helps to load and display pages of data from a larger dataset in order to use both network bandwidth and system resources more efficiently
  • Material Design 3 - Material 3 includes Material You personalization features like dynamic color, and is designed to be cohesive with the new visual style and system UI on Android 12 and above
  • Mavericks - Mavericks is the Android MVI framework from Airbnb.
  • Lottie Android - Render After Effects animations natively on Android
  • Ktor - consume the REST APIs.
  • KSP - Kotlin Symbol Processing API.
  • Accompanist Pager - A library which provides paging layouts for Jetpack Compose.
  • Coil - An image loading library for Android backed by Kotlin Coroutines.
  • JUnit - a “Unit Testing” framework
  • Mockk - Mocking library for Kotlin
  • Chucker - An HTTP inspector for Android & OkHTTP
  • Secrets Gradle Plugin for Android - A Gradle plugin for providing secrets to Android project.
  • Faker - kotlin-faker is a data-generation library intended for use during development and testing

Setup & Installation

Gif App is using the Giphy Api for constructing RESTful API. Create an account in order to have an api key and put it in secrets.properties file as following

giphyApiKey=Your Api Key

Challenge and difficulties encountered

  • Actually the goal is to keep things simple, that why i decided to not use (remove) the Jetpack Pagination,because this has somme constraints that will led me to rethinks some parts of my architecture. I prefer to implement my own pagination logic in the future.

Find this repository useful? ❤️

Support it by joining stargazers for this repository. ⭐

License

Designed and developed by 2020 yveskalume (Yves Kalume)

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.