Skip to content

A movie explore App featuring MVI, Modularization, and other latest trends on mobile development.

License

Notifications You must be signed in to change notification settings

seyedjafariy/AIO

Repository files navigation

AIO

Build Status ktlint License Awesome Kotlin Badge

Movie explore featuring modularization and latest trends on Android.

Who is it for?

  • Android Developer folks
  • Koltin fans
  • Want to learn a real usage of a tool
  • Interested in the architecture in use
  • Want to participate on crafting a great app
  • Beginners/Intermediates/Advanced developers
  • Just here to copy-past?!

Images of AIO

AIO demo

AIO main 1

AIO main 2

AIO detail

AIO search

About

AIO stand for All In One. it's there because I wanted to say you might find everything at one place (no surprises!)

AIO is Kotlin-First. so everything you see here in this repository will be in Kotlin.

For now I'm using TMDB as backend and API source.

Architecture is MVI/UDF Using RxJava.

Using Bitrise for CI/CD. Release generation is all automatic and human less. every push to master causes a new release.

I try to explain every path I take every workaround I make and all and all anything interesting on my Blog : worldsnas.com

make sure to have a look there for a detailed explanation.

Installing/Running

  • First create a local.properties in root folder
  • Get a TMDB API-Key and add to the properties file with "API_KEY" tag
  • Add a empty field for these keys:
    • keyStorePass
    • aioAlias
    • keyPass
    • keyStoreAddress
    • Fabric_API_KEY
  • Lastly disable GoogleServices plugin by commenting apply plugin: 'com.google.gms.google-services' in app/build.gradle file

Now you can open the project in AndroidStudio and build/Test/Run it.

Latest Release

The project has not yet been published on google play. but you can grab the latest release in two ways:

Features and Goals

All the detail of project Milestones/Features/Progress/Done can be found on Github Project for this Repository. I try to keep it updated and as detailed as possible.

Technologies

  • Conductor: A small, yet full-featured framework that allows building View-based Android applications.
  • Dagger2: Dependency Injection framework for both Java and Android.
  • ButterKnife: View Binding into fields.
  • RxJava: A library for composing asynchronous and event-based programs by using observable sequences.
  • Epoxy: Epoxy is an Android library for building complex screens in a RecyclerView.
  • DynamicFeatures: Deliver code to Android onDemand.
  • Retrofit: Type-safe HTTP client for Android and Java.
  • OkHttp: An HTTP client for Android, Kotlin, and Java.
  • Fresco: An Android library for managing images and the memory they use.
  • LeakCanary: LeakCanary is a memory leak detection library for Android.
  • AssertJ: Fluent assertions for java.
  • Mockk: Mocking library for Kotlin.
  • MockWebServer: A scriptable web server for testing HTTP clients.
  • Robolectric: Running Android Tests on JVM.
  • Androidx Test: Helper libraries for Android Tests.

Contribution

There are a ton of stuff that you can contribute to.

  • Readme!
  • Reporting issues with the app (by creating new issues on this repo)
  • New cool feature in mind? add it to the Project page.
  • Like to add documentation just send a PR
  • Like to see a feature in the app quicker? try to implement it yourself and send a PR
  • A typo? sure why not?
  • Bug Fix? shoot it!
  • Different approach to some implementation? I'm all open.
  • Something bothers in this repo? open a discussion issue so we can talk.