Skip to content
/ forma Public template
forked from formatools/forma

Opinionated Gradle project Architecture framework.

License

Notifications You must be signed in to change notification settings

atetc/forma

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

forma (WIP)

Opinionated, scalable, thoughtfully structured, type-safe, guided Gradle project framework for Android.

  • You don't need to be a gradle expert anymore
  • Get rid of project configuration bad practices
  • Type-safe, single method configuration for your modules, no room for error
  • Built-in dependency visibility rules
  • Module types - enforce scalable project structure
  • High-performance builds: Gradle best practices are applied automatically
  • Opinionated dependency framework - helps developers to understand and deal with transitive dependencies hell
  • Extensible - be the expert when you need to!
  • And much more...

Configuration made easy:

// root build.gradle.kts

// Configure shared aspects of your android Projects in a single place,
// no need to copy it over to all your modules or invent some smart sharing technique;)
androidProjectConfiguration(
    minSdk = 21,
    targetSdk = 29,
    compileSdk = 29,
    kotlinVersion = "1.4.10",
    agpVersion = "4.0.0",
    versionCode = 1,
    versionName = "1.0",
    repositories = {
        google()
        jcenter()
    }
)

Your kotlin android library

// Type-safe creation of your module is a single method call
// Required plugins applied automatically
// Configuration inferred from Forma.configure
// Configuration is fast ;)
androidLibrary(
    // Mandatory, visible from build configuration
    packageName = "com.stepango.example",
    // External dependencies declaration, one universal syntax
    dependencies = deps(
        google.material,
        androidx.core_ktx,
        androidx.appcompat,
        androidx.constraintlayout,
        androidx.navigation_fragment_ktx,
        androidx.navigation_ui_ktx,
        androidx.vectordrawable
    ),
    // Internal project dependencies, declared separately from externals
    projectDependencies = deps(
        project(":demo-library")
    ),
    // Test dependencies declaration
    testDependencies = deps(
        test.junit
    ),
    // Android test dependencies declaration
    androidTestDependencies = deps(
        test.junit_ext,
        test.espresso
    )
)
Supported module types implemented status
androidBinary
androidLibrary/androidFeature in progress experimental
androidDataBinding in progress
androidDataBindingAdapters in progress
androidWidget in progress
androidRes planned
androidTestUtils
androidUtils planned
testUtils
utils
api
impl
Icons made by Freepik from www.flaticon.com

About

Opinionated Gradle project Architecture framework.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 100.0%