Skip to content
team-nimblehq edited this page Mar 31, 2022 · 6 revisions

Welcome to the android-templates wiki!

This repository generates a new project based on our preferences, by running a simple script.

Example: ./newproject.sh -t crt -p co.myproject.example -n "MyProjectExampleCoroutine"

This script must include all essentials by default, while optional features can be appended with flags. To prevent this repository from becoming a dumping playground, features can be rejected too.

Planning to contribute? Let's have a look at the criteria:

How do we decide if a feature is essential? 👍

  • It is always implemented in the projects we've worked on.
  • It allows developers to avoid boilerplate setup, maintain the code quality and have good experience for themselves.
  • It is a Google recommended component.

How do we decide if a feature is optional? 🚩

  • It is regularly implemented in the project's we've worked on.
  • It is an alternative to a newer dominant option.

How do we decide if a feature is rejected? 👎

  • It is barely implemented in the project's we've worked on due to being a specific project requirement.
  • It has been replaced completely by a newer dominant option.

Let's have a look at some examples 🔎

Essential:

  • Timber: A logging library which is always used in all the projects we've worked on.
  • Firebase App Distribution: Continuous delivery always requires a boilerplate setup.
  • Detekt: Code smell analysis is important to maintain code quality.
  • Hilt: Dependency injection provides a good developer experience.
  • Navigation Component: A suite of libraries for in-app navigation which is recommended by Google.

Optional:

  • RxPermissions: Permissions powered by RxJava are regularly used, but not every project needs it.
  • Bitrise: A CI/CD provider which is regularly used, but GitHub Actions is our default choice.

Rejected:

  • Skeleton Layout: A progress indicator with visual feedback, it has a specific use case that is barely used.
  • Mockito: A mocking framework which is barely used, because Mockk is our default choice.

Keep in mind, the features are based on our team's requirements. In case the client has different requirements or requests, we can consider adding them as optional features if they occur regularly.

Please note that the above examples are not definitive as new and existing libraries keep on emerging and evolving.

Still unsure where your future contribution belongs? Let's discuss! 🚀

Clone this wiki locally