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:
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.changelog"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.changelog
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val CHANGELOG_ROUTE = "changelog"
|
||||
|
||||
fun NavGraphBuilder.changelogScreen() {
|
||||
composable(CHANGELOG_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.changelog_title),
|
||||
description = stringResource(R.string.changelog_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="changelog_title">Änderungsprotokoll</string>
|
||||
<string name="changelog_description">Jede Änderung, die Pixelwall vorgenommen hat, mit Rückgängig.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="changelog_title">Change log</string>
|
||||
<string name="changelog_description">Every change Pixelwall made, with undo.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.dashboard"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.dashboard
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val DASHBOARD_ROUTE = "dashboard"
|
||||
|
||||
fun NavGraphBuilder.dashboardScreen() {
|
||||
composable(DASHBOARD_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.dashboard_title),
|
||||
description = stringResource(R.string.dashboard_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="dashboard_title">Übersicht</string>
|
||||
<string name="dashboard_description">Sicherheitsbewertung und Befunde für dieses Gerät.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="dashboard_title">Overview</string>
|
||||
<string name="dashboard_description">Security score and findings for this device.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.monitor"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.monitor
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val MONITOR_ROUTE = "monitor"
|
||||
|
||||
fun NavGraphBuilder.monitorScreen() {
|
||||
composable(MONITOR_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.monitor_title),
|
||||
description = stringResource(R.string.monitor_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="monitor_title">Überwachung</string>
|
||||
<string name="monitor_description">Hinweise bei neuen Apps, neuen Berechtigungen und zurückgesetzten Einstellungen.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="monitor_title">Monitoring</string>
|
||||
<string name="monitor_description">Alerts for new apps, new permissions and reset settings.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.network"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.network
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val NETWORK_ROUTE = "network"
|
||||
|
||||
fun NavGraphBuilder.networkScreen() {
|
||||
composable(NETWORK_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.network_title),
|
||||
description = stringResource(R.string.network_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="network_title">Netzwerk</string>
|
||||
<string name="network_description">Privates DNS, Funkverbindungen und die optionale Firewall.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="network_title">Network</string>
|
||||
<string name="network_description">Private DNS, radios and the optional firewall.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.onboarding"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.onboarding
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val ONBOARDING_ROUTE = "onboarding"
|
||||
|
||||
fun NavGraphBuilder.onboardingScreen() {
|
||||
composable(ONBOARDING_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.onboarding_title),
|
||||
description = stringResource(R.string.onboarding_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="onboarding_title">Zugriffsstufen</string>
|
||||
<string name="onboarding_description">Shizuku oder die ADB-Freigabe einrichten, um Änderungen freizuschalten.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="onboarding_title">Access levels</string>
|
||||
<string name="onboarding_description">Set up Shizuku or the ADB grant to unlock changes.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.permissions"
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.permissions
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val PERMISSIONS_ROUTE = "permissions"
|
||||
|
||||
fun NavGraphBuilder.permissionsScreen() {
|
||||
composable(PERMISSIONS_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.permissions_title),
|
||||
description = stringResource(R.string.permissions_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="permissions_title">Berechtigungen</string>
|
||||
<string name="permissions_description">App-Berechtigungen und AppOps fein justieren.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="permissions_title">Permissions</string>
|
||||
<string name="permissions_description">Fine-tune app permissions and app operations.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.profiles"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.profiles
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val PROFILES_ROUTE = "profiles"
|
||||
|
||||
fun NavGraphBuilder.profilesScreen() {
|
||||
composable(PROFILES_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.profiles_title),
|
||||
description = stringResource(R.string.profiles_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="profiles_title">Profile</string>
|
||||
<string name="profiles_description">Vordefinierte und eigene Profile, Regeln und Automatisierung.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="profiles_title">Profiles</string>
|
||||
<string name="profiles_description">Predefined and custom profiles, rules and automation.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.system"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.system
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val SYSTEM_ROUTE = "system"
|
||||
|
||||
fun NavGraphBuilder.systemScreen() {
|
||||
composable(SYSTEM_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.system_title),
|
||||
description = stringResource(R.string.system_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_title">System & Google</string>
|
||||
<string name="system_description">Systemschalter und eine Checkliste für dein Google-Konto.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="system_title">System & Google</string>
|
||||
<string name="system_description">System toggles and a checklist for your Google account.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,7 @@
|
||||
plugins {
|
||||
alias(libs.plugins.pixelwall.android.feature)
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "org.pixelwall.feature.trackers"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.pixelwall.feature.trackers
|
||||
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.navigation.NavGraphBuilder
|
||||
import androidx.navigation.compose.composable
|
||||
import org.pixelwall.core.ui.component.PlaceholderScreen
|
||||
|
||||
const val TRACKERS_ROUTE = "trackers"
|
||||
|
||||
fun NavGraphBuilder.trackersScreen() {
|
||||
composable(TRACKERS_ROUTE) {
|
||||
PlaceholderScreen(
|
||||
title = stringResource(R.string.trackers_title),
|
||||
description = stringResource(R.string.trackers_description),
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="trackers_title">Tracker</string>
|
||||
<string name="trackers_description">Offline-Erkennung von Trackern in installierten Apps.</string>
|
||||
</resources>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="trackers_title">Trackers</string>
|
||||
<string name="trackers_description">Offline tracker detection in installed apps.</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user