A GitHub Repository Template for structured and reusable Gradle build logic in Android projects. This template includes custom Gradle plugins for Jetpack Compose, library management, testing, publishing, linting, and static code analysis, making project setup and maintenance more efficient.
The purpose of this template is to provide an optimal developer environment without dictating how the app's code should be structured. Developers are free to choose their own architecture, package structure, and third-party dependencies. This template focuses only on best practices for tooling, testing, and project setup, allowing developers to focus on writing clean and efficient code.
- Ktlint: Automatic code formatting.
- Detekt: Static analysis to detect code smells.
- Git Hooks: Automatically runs static analysis checks before commit.
- Gradle Versions Plugin: Keeps track of the latest dependency versions.
- GitHub Actions: Automated CI for every pull request.
- Paparazzi: UI testing library.
This template integrates Danger to perform checks on your pull requests, ensuring consistency and high-quality code. You can review the checks in the Dangerfile. To use Danger correctly, ensure that you have granted the necessary permissions in the Repository Settings under Actions > General and enable read and write access to workflows.
Click the "Use this template" button on GitHub to create a new repository with this setup.
git clone https://github.com/VahidGarousi/Framework.git
cd Framework
Implementation Class | ID | Description |
---|---|---|
AndroidApplicationComposeConventionPlugin | framework.android.application | Configures Android applications with Jetpack Compose support. |
AndroidApplicationConventionPlugin | framework.android.application.flavors | Configures Android applications with flavor support. |
AndroidApplicationFlavorsConventionPlugin | framework.android.application.compose | Configures flavors for Android applications with Compose support. |
AndroidApplicationJacocoConventionPlugin | framework.android.application.jacoco | Configures Jacoco code coverage for Android applications. |
AndroidDetektConventionPlugin | framework.android.test | Configures Detekt static code analysis tool for Android projects. |
AndroidLibraryComposeConventionPlugin | framework.jvm.library | Configures Android libraries with Jetpack Compose support. |
AndroidLibraryConventionPlugin | framework.android.library | Configures Android libraries. |
AndroidLibraryJacocoConventionPlugin | framework.android.library.compose | Configures Jacoco code coverage for Android libraries. |
AndroidLibraryPublisherConventionPlugin | framework.android.library.jacoco | Configures publishing for Android libraries. |
AndroidTestConventionPlugin | framework.jvm.publisher | Configures testing for Android projects. |
JvmLibraryConventionPlugin | framework.android.publisher | Configures JVM libraries. |
JvmLibraryPublisherConventionPlugin | framework.android.ktlint | Configures publishing for JVM libraries. |
KotestConventionPlugin | framework.android.detekt | Configures Kotest testing for JVM projects. |
KotlinterConventionPlugin | framework.android.detekt | Configures Ktlint tool for code style checks in Android projects. |
Any PRs are very welcome! π You can fix a bug, add a feature, optimize performance, and propose a new cool approach in code-base architecture. Feel free to make a PR! π