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
+13
View File
@@ -0,0 +1,13 @@
plugins {
alias(libs.plugins.pixelwall.android.library)
alias(libs.plugins.pixelwall.android.hilt)
}
android {
namespace = "org.pixelwall.core.system"
}
dependencies {
api(project(":core:domain"))
implementation(libs.androidx.core.ktx)
}
View File
@@ -0,0 +1,18 @@
package org.pixelwall.core.system
import android.os.Build
import org.pixelwall.core.domain.DeviceInfoProvider
import org.pixelwall.core.model.DeviceInfo
import javax.inject.Inject
class BuildDeviceInfoProvider @Inject constructor() : DeviceInfoProvider {
override fun current() = DeviceInfo(
manufacturer = Build.MANUFACTURER,
brand = Build.BRAND,
device = Build.DEVICE,
model = Build.MODEL,
sdkInt = Build.VERSION.SDK_INT,
release = Build.VERSION.RELEASE,
securityPatch = Build.VERSION.SECURITY_PATCH,
)
}
@@ -0,0 +1,15 @@
package org.pixelwall.core.system.di
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import org.pixelwall.core.domain.DeviceInfoProvider
import org.pixelwall.core.system.BuildDeviceInfoProvider
@Module
@InstallIn(SingletonComponent::class)
abstract class SystemModule {
@Binds
abstract fun bindDeviceInfoProvider(impl: BuildDeviceInfoProvider): DeviceInfoProvider
}