FinnAds 📱

FinnAds is a sample project to fetch advertisements from a mock api. It follows the MVVM architecture & single activity pattern.


Android development

Here is the overview of the libraries used in FinAds 👇.

Module structure

  • :ui:ads: Composables and the view model for the ads screen
  • :base: Dagger modules and classes which is needed in all layers
  • :common-ui: Common composables and utilities for UI
  • :data:repository: Repositories, data sources and data stores
  • :data:api: Api services
  • :data:entity:response: Response api models
  • :data:entity:dto: Data transfer objects mapped from api responses
  • :data-android: Android library module for the database and type converters

Module structure

Future improvements

  • Navigation support
  • Filter bottom sheet
  • Swipe to refresh functionality
  • Removal of the cached bitmap after removing from favourites
  • Better handling of local caching of ads
  • Better handling of error cases (such as more descriptive error messages based on error type)
  • Moving dependency versions to buildSrc
  • Animations (such as like button + Lottie)
  • Grid layout support such that the user could change the appearance of the list
  • Addition of different flavors (such as mock flavor with mock data)
  • More composable previews
  • Gradle module for common composables
  • Signing configuration & proguard rules for the release
  • Translations of strings
  • Domain layer
  • More Unit & UI tests
  • Screenshot testing
  • CI/CD integration

License

Copyright 2022 Fatih Giris

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

    https://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.

GitHub

View Github