A CI-proven Jetpack Compose project generator for Android. It produces a multi-module Clean Architecture starter whose network, authentication, persistence, and secrets infrastructure is selected at generation time.
git clone https://github.com/mustafayigitt/ComposeTemplate.git
cd ComposeTemplate
./gradlew create-new-app \
-Pargs='com.example.myapp,MyNewApp' \
-PdataStrategy=remote \
-q --console=plain| Strategy | Network/auth | Room | Generated start flow |
|---|---|---|---|
remote |
Yes | No | Onboarding → Login/Home |
offline-first |
Yes | Yes | Onboarding → Login/Home |
local |
No | Yes | Onboarding → Home |
minimal |
No | No | Onboarding → Home |
dataStrategy is strict and defaults to remote. Network-backed outputs retain secrets/native hardening by default; add -PwithSecrets=false to omit it. Local and minimal outputs omit secrets/security automatically.
Every retained feature always contains data, domain, navigation, and presentation. Add another feature with:
./gradlew scaffoldFeature -PfeatureName=user_profileRoom-backed generated projects can also scaffold starter entity/DAO files with -PwithDatabase=true.
CI generates and assembles all four strategies in debug and release, checks strategy-specific path/text residue, proves a network-backed secret-free output, rejects invalid strategy values, compiles regular and Room feature scaffolds, and rebuilds the source template after deleting optional modules.
ComposeTemplate is an architecture starter, not a finished product. Generated apps still need product-specific domain logic, real backend contracts, signing, branding, migrations, and runtime/UI tests. The offline-first strategy currently selects network + Room topology; it does not generate synchronization, conflict-resolution, or cache-policy logic.
The wiki/ directory is the documentation source of truth:
- 00 - Project Context
- 01 - Module Topology and Build System
- 02 - Navigation and UI State
- 03 - Network and Auth Token Flow
- 04 - Secrets, Security and Hardening
- 05 - Generator and Scaffolding Tooling
- 06 - Quality, Tests and CI
- 07 - Risks, Gaps and Open Questions
- 08 - Getting Started
JDK 17 and Android SDK (compileSdk 37 / targetSdk 36 / minSdk 26). NDK 27 with CMake is required only when secrets are retained. Always use the Gradle wrapper.
See CONTRIBUTING.md. Licensed under Apache-2.0.