I decided to start using monorepo for all of my new personal Android projects. Let’s take a look at issues I had with separated repos.

Obsolete codebase

Recently I decided to quit one of my old open source projects [SecurityShowcase] for several reasons (Complete list is written in the repo’s readme) . But one of those reasons was outdated codebase. This is painful with every personal project where I return back after months or even worst after years.

Reuse code

Every time I start to write the new app I repeatedly copy/paste skeleton with all basic core files and every time I have to solve issues when bumping versions.

Save the idea

Every time I play with some specific feature or programming approach, the result ends always wired to some specific app or just thrown away completely.

Monorepo as a solution

All those mentioned issues forced me to think about how to continue with all my habits and write open source with maintainable code base. And I realised that my personal monorepo could be a solution for all the issues listed above.

Using one codebase for every piece of contribution ensures repo is always up to date. I agree, that sometimes it might be harder to maintain global codebase.

Using one codebase forces project to be well scaled and to have proper testing (to not break anything accidentally).

Using modular system for Android project allows to have multiple applications based on the same core/feature modules.

Modular system allows to add any idea into up-to-date codebase at any timepretty quickly.

Using one codebase will force us to carefully think about existing features whether they are still worth to have them in the repo.