Set up project skeleton (milestone 1)

- Architecture and feature overview in docs/ARCHITECTURE.md
- Gradle 9.8 / AGP 9.4 / Kotlin 2.4 with version catalog and convention plugins
- Modules :app, :core:*, :device-profiles, :feature:* (placeholder screens)
- Flavors core (no INTERNET, enforced by a build check) and full
- Material You theme, navigation, expert mode and dry-run settings (DataStore)
- Pixel 8-10 device detection, unit tests, GPLv3 license, English README with Obtainium badge

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-15 22:02:14 +02:00
co-authored by Claude Opus 5.5
commit 0a7caf6c5f
117 changed files with 3175 additions and 0 deletions
+81
View File
@@ -0,0 +1,81 @@
plugins {
alias(libs.plugins.pixelwall.android.application)
alias(libs.plugins.pixelwall.android.compose)
alias(libs.plugins.pixelwall.android.hilt)
}
android {
namespace = "org.pixelwall.app"
defaultConfig {
applicationId = "org.pixelwall.app"
versionCode = 1
versionName = "0.1.0"
}
flavorDimensions += "network"
productFlavors {
// Ohne INTERNET-Berechtigung. Firewall nur als Sperre pro App.
create("core") {
dimension = "network"
isDefault = true
}
// Mit INTERNET: DNS-Filter, Blocklisten, optionale Regelwerk-Updates.
create("full") {
dimension = "network"
applicationIdSuffix = ".full"
versionNameSuffix = "-full"
}
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
// F-Droid / reproducible builds: keine verschlüsselten Abhängigkeits-Metadaten im APK.
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
androidResources {
localeFilters += listOf("en", "de")
}
}
dependencies {
implementation(project(":core:model"))
implementation(project(":core:domain"))
implementation(project(":core:data"))
implementation(project(":core:system"))
implementation(project(":core:privileged"))
implementation(project(":core:ui"))
implementation(project(":device-profiles"))
implementation(project(":feature:dashboard"))
implementation(project(":feature:permissions"))
implementation(project(":feature:network"))
implementation(project(":feature:system"))
implementation(project(":feature:profiles"))
implementation(project(":feature:trackers"))
implementation(project(":feature:monitor"))
implementation(project(":feature:changelog"))
implementation(project(":feature:onboarding"))
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.androidx.lifecycle.viewmodel.compose)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.hilt.navigation.compose)
testImplementation(project(":core:testing"))
testImplementation(libs.truth)
testImplementation(libs.turbine)
androidTestImplementation(libs.androidx.test.ext.junit)
androidTestImplementation(libs.androidx.test.runner)
}