Android app that collect information about Anime and Manga using Kitsu API
It is work in progress 🚧.
Api docs: https://hummingbird-me.github.io/api-docs/
After cloning the repository you have to create the file secrets.defaults.properties
in the root of the project with the next properties:
- KITSU_API_URL="https://kitsu.io/api/edge/" (In this case we expose the url because is public)
- ALIAS = Example
- KEY_PASS = Example
- KEY_ALIAS = Example
The ALIAS, KEY_PASS, KEY_ALIAS keys are if you want to run the app in build type release but you have to generate a keystore and store it in app module with the name keystore.jks
and when you generate your keystore.jks add the keys that you store in secrets.defaults.properties
Follow this guidelines
It follows a clean architecture with modularization in order to have this principles:
- Single source of truth.
- Testability.
- Separation of concerns.
Following the image we have the next modules:
:App
:core:data
:core:domain
:core:util
:core:model
:core:testing
:core:resources
:feature:home
:feature:detail
And also it has a special module that hanldes all the gradle configuration it's the module :build-src
(all the gradle files are made with kotlin dsl) in order to have a single source of truth in our gradle files module.
All the libraries are in versions catalog. Ref: https://developer.android.com/build/migrate-to-catalogs
For networking, we use retrofit. RxJava for reactivity.
For pagination we use paging3 library, and for handle cache and source of data to present we use Room
For ui we use:
- XML.
- MotionLayout.
- Navigation component.
- Navigation transition animation.
- DataBinding.
- ViewBinding.
- Single Activity architecture.
The architectural pattern that we use is MVVM
.
For dependency injection library used is Koin
- Mockito
- Esspresso for ui test
For CI/CD we use Fastlane in order to create the lanes, pipes or actions. With fastlane we can run the pipeline locally but in this case we use Github Actions in order to execute the lanes.
Ktlint(Format, Verify)
- Unit Test verify
- Code Coverage(Jacoco)
- Ui Test in develop(Firebase Test Lab Espresso)
Ktlint(Format, Verify)
- Unit test verify
- Code Coverage(CodeClimate)
- Code analysis(CodeClimate)
- Ui Test in develop(Firebase Test Lab Espresso, Robotest)
For delivery we have to create a new Github Release when the tag is pushed in master with any of these version names:
v*.*.*-alpha*
in progress..v*.*.*-beta*
v*.*.*-production*
in progress..
Unit test verify
- Ui Test in develop(FirebaseTest Lab Espresso, Robotest)
- Deliver to playstore
Animemania is created under the terms of the Apache License (Version 2.0). See the license for more information.