Reading Time: 3 minutes

In the name of God

Hello guys. Here I am with the very first post on AIO (my side project) series.It’s been a long time that I wanted to start a side project (hobby) for myself but it’s been delayed until now. I finally started it and now ready to talk about my baby side project. so brace yourselves for a quick introduction!

I plan to develop it as much as possible while trying new technologies, tricks and tips that I learn, first on this project. Also planning to write about every step I take during this process. So stay tuned for more posts on this series.

I did my research and made up my mind about what to create and what to use as a API service. The project is going to start as a Movie News project. For the content I’m going to use The Movie Database (TMDb) as backend API, the reason behind using a third party service is that I can think only about Android and Android-ish stuff, but nothing would prevent me from creating a new API service for my self, more on the API stuff later in this series.

To avoid limiting myself from going further and exploring other APIs and Services in this project I tried to pick a more generalized name for it. That’s where “AIO” comes in. It actually stands for “All In One”.

First things first let’s see what I have done for project setup.

First of all I created a Github repository to use it as a VCS. leveraged from Github “create new repository” wizard to add a License and .gitignore files all at the same time. since I wanted to practice Git more and more and follow Gitflow added a rule to master branch to make it a protected branch and block all direct pushes to this branch, as a result of this if anyone (including me) tries to push to the branch has to submit a PR and need at least one review on the PR before merging. So far I’m the lone contributor of this project, so I’m going to use admin privileges to merge my PRs.

As for the Android project itself I started a new project with Kotlin as the main language and minSdkVersion of 21. The plan is to make this project as modularized as possible that means you will see Android libraries as well as Dynamic-Feature modules here a lot. For the architecture I’m going to use the new boy in the neighborhood called MVI. the reason for this is because I have been using MVI for more than a year now and I could see the benefits of this Arch from day one. Plus testing with this approach is at the easiest level so it allows me to further explore TDD.The only concern about this Arch is that it has a lot of boilerplate which might (probably will) make development more time consuming for a single developer. But I want to try and learn too right?!

You will see Retrofit, OkHttp, Dagger2, RxJava2, Conductor, Objectbox, Androidx, ConstraintLayout, gradle.kts, Kotlin Extensions, Epoxy, and much more technologies in this project.

Now that we have covered all the code related stuff it’s time to talk about beauty!  Both Code and App UI beauty.

Code wise I’ve enabled Ktlint on CI (yeah, you read it right I have setup a CI) to make sure no code is pushed without taking Kotlin guidelines into consideration.

Here comes the hard part: UI/UX. I literally have no idea about design/UI/UX. I reached out my friends for some help in which one of them had the free time and took care of all the designs I need throughout the app. So there is not much I can explain here. The only thing worth mentioning is that he is using the latest google’s design principles called Material Theming to make our app shine!

About the CI I mentioned earlier I’m going to use Bitrise CI which is free (for public repos), very powerful and  the support is great.

whew, this was very quick for introduction! but don’t worry I’m going in details about each and every topic I mentioned in this episode in later posts.

for now the App is not on any store but I publish new update every single week. you can grab new releases at this Telegram Channel or at Github release. you can check milestones, features,progress and plans all on the Github porject.

Oh, I almost forgot here is the Github repo to AIO. Also any contribution is more than welcome.


Thanks for reading my article. Stay tuned for the new posts on this series.

Happy coding and as always any feedback is appreciated.


Please enter your comment!
Please enter your name here