diff --git a/README.MD.other b/README.MD.other
new file mode 100644
index 00000000..afde7890
--- /dev/null
+++ b/README.MD.other
@@ -0,0 +1,19 @@
+# ScanBridge
+
+### Android
+To run the application on android device/emulator:
+ - open project in Android Studio and run imported android run configuration
+
+To build the application bundle:
+ - run `./gradlew :androidApp:assembleDebug`
+ - find `.apk` file in `androidApp/build/outputs/apk/debug/androidApp-debug.apk`
+
+### Desktop
+Run the desktop application: `./gradlew :desktopApp:run`
+Run the desktop **hot reload** application: `./gradlew :desktopApp:hotRun --auto`
+
+### iOS
+To run the application on iPhone device/simulator:
+ - Open `iosApp/iosApp.xcproject` in Xcode and run standard configuration
+ - Or use [Kotlin Multiplatform Mobile plugin](https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile) for Android Studio
+
diff --git a/README.md b/README.md
index a01bd621..679da54f 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@
-
-
-
-
-
+
+
+
## Features
@@ -104,7 +104,7 @@ If you want to chat with me or other users, you can join the Matrix room
## Contributions
Contributions are welcome, and it would be amazing if you want to help. Refer to
-the [Contribution Guidelines](CONTRIBUTING.md) for more information.
+the [Contribution Guidelines](androidApp/CONTRIBUTING.md) for more information.
## License
diff --git a/app/.gitignore b/androidApp/.gitignore
similarity index 100%
rename from app/.gitignore
rename to androidApp/.gitignore
diff --git a/CHANGELOG.md b/androidApp/CHANGELOG.md
similarity index 100%
rename from CHANGELOG.md
rename to androidApp/CHANGELOG.md
diff --git a/CONTRIBUTING.md b/androidApp/CONTRIBUTING.md
similarity index 100%
rename from CONTRIBUTING.md
rename to androidApp/CONTRIBUTING.md
diff --git a/COPYING b/androidApp/COPYING
similarity index 100%
rename from COPYING
rename to androidApp/COPYING
diff --git a/Gemfile b/androidApp/Gemfile
similarity index 100%
rename from Gemfile
rename to androidApp/Gemfile
diff --git a/Gemfile.lock b/androidApp/Gemfile.lock
similarity index 100%
rename from Gemfile.lock
rename to androidApp/Gemfile.lock
diff --git a/adb+.sh b/androidApp/adb+.sh
similarity index 100%
rename from adb+.sh
rename to androidApp/adb+.sh
diff --git a/assets/GetItOnGooglePlay_Badge_Web_color_English.svg b/androidApp/assets/GetItOnGooglePlay_Badge_Web_color_English.svg
similarity index 100%
rename from assets/GetItOnGooglePlay_Badge_Web_color_English.svg
rename to androidApp/assets/GetItOnGooglePlay_Badge_Web_color_English.svg
diff --git a/assets/get-it-on-fdroid.svg b/androidApp/assets/get-it-on-fdroid.svg
similarity index 100%
rename from assets/get-it-on-fdroid.svg
rename to androidApp/assets/get-it-on-fdroid.svg
diff --git a/assets/icon.svg b/androidApp/assets/icon.svg
similarity index 100%
rename from assets/icon.svg
rename to androidApp/assets/icon.svg
diff --git a/app/build.gradle.kts b/androidApp/build.gradle.kts
similarity index 89%
rename from app/build.gradle.kts
rename to androidApp/build.gradle.kts
index 01f50bcc..32ce3b87 100644
--- a/app/build.gradle.kts
+++ b/androidApp/build.gradle.kts
@@ -18,26 +18,10 @@ plugins {
id("app.cash.paraphrase") version "0.4.1"
}
-fun getGitCommitHash(): String {
- return try {
- val command = "git rev-parse --short HEAD"
- val process = ProcessBuilder()
- .command(command.split(" "))
- .directory(rootProject.projectDir)
- .redirectError(ProcessBuilder.Redirect.INHERIT)
- .start()
- val wait = process.waitFor(60, TimeUnit.SECONDS)
- if (!wait) {
- return "unknown"
- }
-
- val result = process.inputStream.bufferedReader().readText()
-
- result.trim()
- } catch (_: Exception) {
- "unknown" // Fallback
- }
-}
+val gitHashProvider = providers.exec {
+ commandLine("git", "rev-parse", "--short", "HEAD")
+ isIgnoreExitValue = true
+}.standardOutput.asText.map { it.trim() }
tasks.withType().all {
compilerOptions {
@@ -76,10 +60,10 @@ android {
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
- buildConfigField("String", "GIT_COMMIT_HASH", "\"${getGitCommitHash()}\"")
+ buildConfigField("String", "GIT_COMMIT_HASH", "\"${gitHashProvider.get()}\"")
}
debug {
- buildConfigField("String", "GIT_COMMIT_HASH", "\"${getGitCommitHash()}\"")
+ buildConfigField("String", "GIT_COMMIT_HASH", "\"${gitHashProvider.get()}\"")
}
}
flavorDimensions += "edition"
diff --git a/fastlane/Appfile b/androidApp/fastlane/Appfile
similarity index 100%
rename from fastlane/Appfile
rename to androidApp/fastlane/Appfile
diff --git a/fastlane/Fastfile b/androidApp/fastlane/Fastfile
similarity index 100%
rename from fastlane/Fastfile
rename to androidApp/fastlane/Fastfile
diff --git a/fastlane/README.md b/androidApp/fastlane/README.md
similarity index 100%
rename from fastlane/README.md
rename to androidApp/fastlane/README.md
diff --git a/fastlane/Screengrabfile b/androidApp/fastlane/Screengrabfile
similarity index 100%
rename from fastlane/Screengrabfile
rename to androidApp/fastlane/Screengrabfile
diff --git a/fastlane/metadata/android/de-DE/changelogs/1000000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1000000.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1000000.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1000000.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1000001.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1000001.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1000001.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1000001.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1001000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1001000.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1001000.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1001000.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1002000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1002000.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1002000.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1002000.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1003000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1003000.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1003000.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1003000.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1004000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1004000.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1004000.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1004000.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1005000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1005000.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1005000.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1005000.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1006001.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1006001.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1006001.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1006001.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/1006002.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/1006002.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/1006002.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/1006002.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/2000000.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2000000.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/2000000.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2000000.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/2000001.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2000001.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/2000001.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2000001.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/2001002.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2001002.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/2001002.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2001002.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/2001003.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2001003.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/2001003.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2001003.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/2001004.txt b/androidApp/fastlane/metadata/android/de-DE/changelogs/2001004.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/changelogs/2001004.txt
rename to androidApp/fastlane/metadata/android/de-DE/changelogs/2001004.txt
diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/androidApp/fastlane/metadata/android/de-DE/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/full_description.txt
rename to androidApp/fastlane/metadata/android/de-DE/full_description.txt
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png
rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391883115.png
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png
rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/02-scanSettings_1773391879801.png
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png
rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391880499.png
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png
rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391882198.png
diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png b/androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png
rename to androidApp/fastlane/metadata/android/de-DE/images/phoneScreenshots/05-settingsScreen_1773391884031.png
diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png
rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392085232.png
diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png
rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392081788.png
diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png
rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392082774.png
diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png
rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392084316.png
diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png b/androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png
rename to androidApp/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392086217.png
diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png
rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541896730.png
diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png
rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02-scanSettings_1772541894045.png
diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png
rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541894498.png
diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png
rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541895682.png
diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png b/androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png
similarity index 100%
rename from fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png
rename to androidApp/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541897397.png
diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/androidApp/fastlane/metadata/android/de-DE/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/short_description.txt
rename to androidApp/fastlane/metadata/android/de-DE/short_description.txt
diff --git a/fastlane/metadata/android/de-DE/title.txt b/androidApp/fastlane/metadata/android/de-DE/title.txt
similarity index 100%
rename from fastlane/metadata/android/de-DE/title.txt
rename to androidApp/fastlane/metadata/android/de-DE/title.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1000000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1000000.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1000000.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1000000.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1000001.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1000001.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1000001.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1000001.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1001000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1001000.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1001000.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1001000.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1002000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1002000.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1002000.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1002000.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1003000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1003000.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1003000.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1003000.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1004000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1004000.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1004000.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1004000.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1005000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1005000.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1005000.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1005000.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1006001.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1006001.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1006001.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1006001.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/1006002.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/1006002.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/1006002.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/1006002.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/2000000.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2000000.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/2000000.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/2000000.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/2000001.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2000001.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/2000001.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/2000001.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/2001002.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2001002.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/2001002.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/2001002.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/2001003.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2001003.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/2001003.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/2001003.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/2001004.txt b/androidApp/fastlane/metadata/android/en-US/changelogs/2001004.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/changelogs/2001004.txt
rename to androidApp/fastlane/metadata/android/en-US/changelogs/2001004.txt
diff --git a/fastlane/metadata/android/en-US/full_description.txt b/androidApp/fastlane/metadata/android/en-US/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/full_description.txt
rename to androidApp/fastlane/metadata/android/en-US/full_description.txt
diff --git a/fastlane/metadata/android/en-US/images/icon.png b/androidApp/fastlane/metadata/android/en-US/images/icon.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/icon.png
rename to androidApp/fastlane/metadata/android/en-US/images/icon.png
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png
rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391873581.png
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png
rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/02-scanSettings_1773391870896.png
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png
rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/03-discoveryScreen_1773391871298.png
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png
rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391872597.png
diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png b/androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png
rename to androidApp/fastlane/metadata/android/en-US/images/phoneScreenshots/05-settingsScreen_1773391874196.png
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png
rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392074370.png
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png
rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02-scanSettings_1773392071595.png
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png
rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392071982.png
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png
rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392073386.png
diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png b/androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png
rename to androidApp/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392074964.png
diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png
rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541886403.png
diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png
rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/02-scanSettings_1772541881705.png
diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png
rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541884121.png
diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png
rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541885597.png
diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png b/androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png
similarity index 100%
rename from fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png
rename to androidApp/fastlane/metadata/android/en-US/images/tenInchScreenshots/05-settingsScreen_1772541889078.png
diff --git a/fastlane/metadata/android/en-US/short_description.txt b/androidApp/fastlane/metadata/android/en-US/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/short_description.txt
rename to androidApp/fastlane/metadata/android/en-US/short_description.txt
diff --git a/fastlane/metadata/android/en-US/title.txt b/androidApp/fastlane/metadata/android/en-US/title.txt
similarity index 100%
rename from fastlane/metadata/android/en-US/title.txt
rename to androidApp/fastlane/metadata/android/en-US/title.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1000000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1000000.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1000000.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1000000.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1000001.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1000001.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1000001.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1000001.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1001000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1001000.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1001000.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1001000.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1002000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1002000.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1002000.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1002000.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1003000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1003000.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1003000.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1003000.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1004000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1004000.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1004000.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1004000.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1005000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1005000.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1005000.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1005000.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1006001.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1006001.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1006001.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1006001.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/1006002.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/1006002.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/1006002.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/1006002.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/2000000.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2000000.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/2000000.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2000000.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/2000001.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2000001.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/2000001.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2000001.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/2001002.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2001002.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/2001002.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2001002.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/2001003.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2001003.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/2001003.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2001003.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/2001004.txt b/androidApp/fastlane/metadata/android/it-IT/changelogs/2001004.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/changelogs/2001004.txt
rename to androidApp/fastlane/metadata/android/it-IT/changelogs/2001004.txt
diff --git a/fastlane/metadata/android/it-IT/full_description.txt b/androidApp/fastlane/metadata/android/it-IT/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/full_description.txt
rename to androidApp/fastlane/metadata/android/it-IT/full_description.txt
diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png
rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391892623.png
diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png
rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/02-scanSettings_1773391889434.png
diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png
rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391890147.png
diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png
rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391891679.png
diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png b/androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png
rename to androidApp/fastlane/metadata/android/it-IT/images/phoneScreenshots/05-settingsScreen_1773391893582.png
diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png
rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392097014.png
diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png
rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392093573.png
diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png
rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392094636.png
diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png
rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392096232.png
diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png b/androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png
rename to androidApp/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392098119.png
diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png
rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541911340.png
diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png
rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02-scanSettings_1772541904718.png
diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png
rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541907169.png
diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png
rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541910309.png
diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png b/androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png
similarity index 100%
rename from fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png
rename to androidApp/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541914017.png
diff --git a/fastlane/metadata/android/it-IT/short_description.txt b/androidApp/fastlane/metadata/android/it-IT/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/short_description.txt
rename to androidApp/fastlane/metadata/android/it-IT/short_description.txt
diff --git a/fastlane/metadata/android/it-IT/title.txt b/androidApp/fastlane/metadata/android/it-IT/title.txt
similarity index 100%
rename from fastlane/metadata/android/it-IT/title.txt
rename to androidApp/fastlane/metadata/android/it-IT/title.txt
diff --git a/fastlane/metadata/android/screenshots.html b/androidApp/fastlane/metadata/android/screenshots.html
similarity index 100%
rename from fastlane/metadata/android/screenshots.html
rename to androidApp/fastlane/metadata/android/screenshots.html
diff --git a/fastlane/playMetadata/de-DE/changelogs/1006002.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/1006002.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/changelogs/1006002.txt
rename to androidApp/fastlane/playMetadata/de-DE/changelogs/1006002.txt
diff --git a/fastlane/playMetadata/de-DE/changelogs/2000000.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2000000.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/changelogs/2000000.txt
rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2000000.txt
diff --git a/fastlane/playMetadata/de-DE/changelogs/2000001.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2000001.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/changelogs/2000001.txt
rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2000001.txt
diff --git a/fastlane/playMetadata/de-DE/changelogs/2001002.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2001002.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/changelogs/2001002.txt
rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2001002.txt
diff --git a/fastlane/playMetadata/de-DE/changelogs/2001003.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2001003.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/changelogs/2001003.txt
rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2001003.txt
diff --git a/fastlane/playMetadata/de-DE/changelogs/2001004.txt b/androidApp/fastlane/playMetadata/de-DE/changelogs/2001004.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/changelogs/2001004.txt
rename to androidApp/fastlane/playMetadata/de-DE/changelogs/2001004.txt
diff --git a/fastlane/playMetadata/de-DE/full_description.txt b/androidApp/fastlane/playMetadata/de-DE/full_description.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/full_description.txt
rename to androidApp/fastlane/playMetadata/de-DE/full_description.txt
diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png
rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/01-scannedPageScreen_1773392137705.png
diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png
rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/02-scanSettings_1773392134051.png
diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png
rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/03-discoveryScreen_1773392134837.png
diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png
rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/04-emptyScanScreen_1773392136515.png
diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png
rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/05-settingsScreen_1773392138645.png
diff --git a/fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png b/androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png
rename to androidApp/fastlane/playMetadata/de-DE/images/chromeScreenshots/06-supportScreen_1773392131057.png
diff --git a/fastlane/playMetadata/de-DE/images/featureGraphic.png b/androidApp/fastlane/playMetadata/de-DE/images/featureGraphic.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/featureGraphic.png
rename to androidApp/fastlane/playMetadata/de-DE/images/featureGraphic.png
diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png
rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/01-scannedPageScreen_1773391854599.png
diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png
rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/02-scanSettings_1773391851373.png
diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png
rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/03-discoveryScreen_1773391852033.png
diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png
rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/04-emptyScanScreen_1773391853682.png
diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png
rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/05-settingsScreen_1773391855601.png
diff --git a/fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png b/androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png
rename to androidApp/fastlane/playMetadata/de-DE/images/phoneScreenshots/06-supportScreen_1773391848067.png
diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png
rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/01-scannedPageScreen_1773392051915.png
diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png
rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/02-scanSettings_1773392048636.png
diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png
rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/03-discoveryScreen_1773392049419.png
diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png
rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/04-emptyScanScreen_1773392051098.png
diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png
rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/05-settingsScreen_1773392052967.png
diff --git a/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png b/androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png
rename to androidApp/fastlane/playMetadata/de-DE/images/sevenInchScreenshots/06-supportScreen_1773392044965.png
diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png
rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/01-scannedPageScreen_1772541856637.png
diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png
rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/02-scanSettings_1772541853898.png
diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png
rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/03-discoveryScreen_1772541854300.png
diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png
rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/04-emptyScanScreen_1772541855615.png
diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png
rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/05-settingsScreen_1772541857282.png
diff --git a/fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png b/androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png
similarity index 100%
rename from fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png
rename to androidApp/fastlane/playMetadata/de-DE/images/tenInchScreenshots/06-supportScreen_1772541851562.png
diff --git a/fastlane/playMetadata/de-DE/short_description.txt b/androidApp/fastlane/playMetadata/de-DE/short_description.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/short_description.txt
rename to androidApp/fastlane/playMetadata/de-DE/short_description.txt
diff --git a/fastlane/playMetadata/de-DE/title.txt b/androidApp/fastlane/playMetadata/de-DE/title.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/title.txt
rename to androidApp/fastlane/playMetadata/de-DE/title.txt
diff --git a/fastlane/playMetadata/de-DE/video.txt b/androidApp/fastlane/playMetadata/de-DE/video.txt
similarity index 100%
rename from fastlane/playMetadata/de-DE/video.txt
rename to androidApp/fastlane/playMetadata/de-DE/video.txt
diff --git a/fastlane/playMetadata/en-US/changelogs/1006002.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/1006002.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/changelogs/1006002.txt
rename to androidApp/fastlane/playMetadata/en-US/changelogs/1006002.txt
diff --git a/fastlane/playMetadata/en-US/changelogs/2000000.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2000000.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/changelogs/2000000.txt
rename to androidApp/fastlane/playMetadata/en-US/changelogs/2000000.txt
diff --git a/fastlane/playMetadata/en-US/changelogs/2000001.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2000001.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/changelogs/2000001.txt
rename to androidApp/fastlane/playMetadata/en-US/changelogs/2000001.txt
diff --git a/fastlane/playMetadata/en-US/changelogs/2001002.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2001002.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/changelogs/2001002.txt
rename to androidApp/fastlane/playMetadata/en-US/changelogs/2001002.txt
diff --git a/fastlane/playMetadata/en-US/changelogs/2001003.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2001003.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/changelogs/2001003.txt
rename to androidApp/fastlane/playMetadata/en-US/changelogs/2001003.txt
diff --git a/fastlane/playMetadata/en-US/changelogs/2001004.txt b/androidApp/fastlane/playMetadata/en-US/changelogs/2001004.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/changelogs/2001004.txt
rename to androidApp/fastlane/playMetadata/en-US/changelogs/2001004.txt
diff --git a/fastlane/playMetadata/en-US/full_description.txt b/androidApp/fastlane/playMetadata/en-US/full_description.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/full_description.txt
rename to androidApp/fastlane/playMetadata/en-US/full_description.txt
diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png
rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/01-scannedPageScreen_1773392127266.png
diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png
rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/02-scanSettings_1773392124079.png
diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png
rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/03-discoveryScreen_1773392124691.png
diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png
rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/04-emptyScanScreen_1773392126076.png
diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png
rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/05-settingsScreen_1773392128027.png
diff --git a/fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png b/androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png
rename to androidApp/fastlane/playMetadata/en-US/images/chromeScreenshots/06-supportScreen_1773392121020.png
diff --git a/fastlane/playMetadata/en-US/images/featureGraphic.png b/androidApp/fastlane/playMetadata/en-US/images/featureGraphic.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/featureGraphic.png
rename to androidApp/fastlane/playMetadata/en-US/images/featureGraphic.png
diff --git a/fastlane/playMetadata/en-US/images/icon.png b/androidApp/fastlane/playMetadata/en-US/images/icon.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/icon.png
rename to androidApp/fastlane/playMetadata/en-US/images/icon.png
diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png
rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/01-scannedPageScreen_1773391844501.png
diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png
rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/02-scanSettings_1773391841799.png
diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png
rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/03-discoveryScreen_1773391842230.png
diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png
rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/04-emptyScanScreen_1773391843467.png
diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png
rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/05-settingsScreen_1773391845183.png
diff --git a/fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png b/androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png
rename to androidApp/fastlane/playMetadata/en-US/images/phoneScreenshots/06-supportScreen_1773391839216.png
diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png
rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/01-scannedPageScreen_1773392041217.png
diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png
rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/02-scanSettings_1773392038538.png
diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png
rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/03-discoveryScreen_1773392039016.png
diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png
rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/04-emptyScanScreen_1773392040264.png
diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png
rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/05-settingsScreen_1773392041800.png
diff --git a/fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png b/androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png
rename to androidApp/fastlane/playMetadata/en-US/images/sevenInchScreenshots/06-supportScreen_1773392036000.png
diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png
rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/01-scannedPageScreen_1772541846501.png
diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png
rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/02-scanSettings_1772541839135.png
diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png
rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/03-discoveryScreen_1772541841584.png
diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png
rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/04-emptyScanScreen_1772541845528.png
diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png
rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/05-settingsScreen_1772541849182.png
diff --git a/fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png b/androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png
similarity index 100%
rename from fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png
rename to androidApp/fastlane/playMetadata/en-US/images/tenInchScreenshots/06-supportScreen_1772541835912.png
diff --git a/fastlane/playMetadata/en-US/short_description.txt b/androidApp/fastlane/playMetadata/en-US/short_description.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/short_description.txt
rename to androidApp/fastlane/playMetadata/en-US/short_description.txt
diff --git a/fastlane/playMetadata/en-US/title.txt b/androidApp/fastlane/playMetadata/en-US/title.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/title.txt
rename to androidApp/fastlane/playMetadata/en-US/title.txt
diff --git a/fastlane/playMetadata/en-US/video.txt b/androidApp/fastlane/playMetadata/en-US/video.txt
similarity index 100%
rename from fastlane/playMetadata/en-US/video.txt
rename to androidApp/fastlane/playMetadata/en-US/video.txt
diff --git a/fastlane/playMetadata/it-IT/changelogs/1006002.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/1006002.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/changelogs/1006002.txt
rename to androidApp/fastlane/playMetadata/it-IT/changelogs/1006002.txt
diff --git a/fastlane/playMetadata/it-IT/changelogs/2000000.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2000000.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/changelogs/2000000.txt
rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2000000.txt
diff --git a/fastlane/playMetadata/it-IT/changelogs/2000001.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2000001.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/changelogs/2000001.txt
rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2000001.txt
diff --git a/fastlane/playMetadata/it-IT/changelogs/2001002.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2001002.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/changelogs/2001002.txt
rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2001002.txt
diff --git a/fastlane/playMetadata/it-IT/changelogs/2001003.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2001003.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/changelogs/2001003.txt
rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2001003.txt
diff --git a/fastlane/playMetadata/it-IT/changelogs/2001004.txt b/androidApp/fastlane/playMetadata/it-IT/changelogs/2001004.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/changelogs/2001004.txt
rename to androidApp/fastlane/playMetadata/it-IT/changelogs/2001004.txt
diff --git a/fastlane/playMetadata/it-IT/full_description.txt b/androidApp/fastlane/playMetadata/it-IT/full_description.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/full_description.txt
rename to androidApp/fastlane/playMetadata/it-IT/full_description.txt
diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png
rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/01-scannedPageScreen_1773392147446.png
diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png
rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/02-scanSettings_1773392144173.png
diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png
rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/03-discoveryScreen_1773392144879.png
diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png
rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/04-emptyScanScreen_1773392146388.png
diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png
rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/05-settingsScreen_1773392148380.png
diff --git a/fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png b/androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png
rename to androidApp/fastlane/playMetadata/it-IT/images/chromeScreenshots/06-supportScreen_1773392140988.png
diff --git a/fastlane/playMetadata/it-IT/images/featureGraphic.png b/androidApp/fastlane/playMetadata/it-IT/images/featureGraphic.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/featureGraphic.png
rename to androidApp/fastlane/playMetadata/it-IT/images/featureGraphic.png
diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png
rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/01-scannedPageScreen_1773391864832.png
diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png
rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/02-scanSettings_1773391861554.png
diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png
rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/03-discoveryScreen_1773391862266.png
diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png
rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/04-emptyScanScreen_1773391863833.png
diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png
rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/05-settingsScreen_1773391865784.png
diff --git a/fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png b/androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png
rename to androidApp/fastlane/playMetadata/it-IT/images/phoneScreenshots/06-supportScreen_1773391858142.png
diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png
rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/01-scannedPageScreen_1773392064698.png
diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png
rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/02-scanSettings_1773392060668.png
diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png
rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/03-discoveryScreen_1773392062139.png
diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png
rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/04-emptyScanScreen_1773392063851.png
diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png
rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/05-settingsScreen_1773392065789.png
diff --git a/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png b/androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png
rename to androidApp/fastlane/playMetadata/it-IT/images/sevenInchScreenshots/06-supportScreen_1773392056702.png
diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png
rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/01-scannedPageScreen_1772541871263.png
diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png
rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/02-scanSettings_1772541864073.png
diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png
rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/03-discoveryScreen_1772541866487.png
diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png
rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/04-emptyScanScreen_1772541870383.png
diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png
rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/05-settingsScreen_1772541873928.png
diff --git a/fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png b/androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png
similarity index 100%
rename from fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png
rename to androidApp/fastlane/playMetadata/it-IT/images/tenInchScreenshots/06-supportScreen_1772541861315.png
diff --git a/fastlane/playMetadata/it-IT/short_description.txt b/androidApp/fastlane/playMetadata/it-IT/short_description.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/short_description.txt
rename to androidApp/fastlane/playMetadata/it-IT/short_description.txt
diff --git a/fastlane/playMetadata/it-IT/title.txt b/androidApp/fastlane/playMetadata/it-IT/title.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/title.txt
rename to androidApp/fastlane/playMetadata/it-IT/title.txt
diff --git a/fastlane/playMetadata/it-IT/video.txt b/androidApp/fastlane/playMetadata/it-IT/video.txt
similarity index 100%
rename from fastlane/playMetadata/it-IT/video.txt
rename to androidApp/fastlane/playMetadata/it-IT/video.txt
diff --git a/fastlane/playMetadata/screenshots.html b/androidApp/fastlane/playMetadata/screenshots.html
similarity index 100%
rename from fastlane/playMetadata/screenshots.html
rename to androidApp/fastlane/playMetadata/screenshots.html
diff --git a/androidApp/gradle/gradle-daemon-jvm.properties b/androidApp/gradle/gradle-daemon-jvm.properties
new file mode 100644
index 00000000..c4e7acbd
--- /dev/null
+++ b/androidApp/gradle/gradle-daemon-jvm.properties
@@ -0,0 +1,13 @@
+#This file is generated by updateDaemonJvm
+toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect
+toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
+toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/536afcd1dff540251f85e5d2c80458cf/redirect
+toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
+toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/0b98aec810298c2c1d7fdac5dac37910/redirect
+toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/658299a896470fbb3103ba3a430ee227/redirect
+toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect
+toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
+toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/248ffb1098f61659502d0c09aa348294/redirect
+toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ac151d55def6b6a9a159dc4cb4642851/redirect
+toolchainVendor=JETBRAINS
+toolchainVersion=21
diff --git a/androidApp/gradle/libs.versions.toml b/androidApp/gradle/libs.versions.toml
new file mode 100644
index 00000000..e546184f
--- /dev/null
+++ b/androidApp/gradle/libs.versions.toml
@@ -0,0 +1,100 @@
+[versions]
+agp = "9.1.0"
+coilCompose = "3.3.0"
+constraintlayoutCompose = "1.1.1"
+datastore = "1.2.0"
+esclkt = "2.0.6"
+escl-mock-server = "1.0.1"
+itextCore = "9.3.0"
+kotlin = "2.3.20-Beta1"
+coreKtx = "1.17.0"
+junit = "4.13.2"
+junitVersion = "1.3.0"
+espressoCore = "3.7.0"
+kotlinReflect = "2.1.20"
+kotlinxSerializationJson = "1.9.0"
+lifecycleRuntimeKtx = "2.9.4"
+activityCompose = "1.11.0"
+composeBom = "2025.10.00"
+room = "2.8.4"
+timber = "5.0.1"
+zoomable = "0.18.0"
+material3 = "1.5.0-alpha06"
+materialIcons = "1.7.8"
+navigationCompose = "2.9.5"
+versionsPlugin = "0.53.0"
+screengrab = "2.1.1"
+ktor = "3.4.0"
+koin = "4.2.0-RC1"
+koin-plugin = "0.3.0"
+protobuf-plugin = "0.9.6"
+protobuf-kotlin-lite = "4.33.5"
+rules = "1.7.0"
+
+[libraries]
+
+androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
+
+androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
+androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
+androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
+
+koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
+koin-annotations = { module = "io.insert-koin:koin-annotations", version.ref = "koin" }
+koin-test = { module = "io.insert-koin:koin-test", version.ref = "koin" }
+koin-test-junit4 = { module = "io.insert-koin:koin-test-junit4", version.ref = "koin" }
+
+# Android
+koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" }
+koin-android-test = { module = "io.insert-koin:koin-android-test", version.ref = "koin" }
+
+koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin"}
+
+koin-androix-navigation = { module = "io.insert-koin:koin-androidx-compose-navigation", version.ref = "koin"}
+
+# Compose
+koin-compose-viewmodel = { module = "io.insert-koin:koin-compose-viewmodel", version.ref = "koin" }
+koin-compose-viewmodel-navigation = { module = "io.insert-koin:koin-compose-viewmodel-navigation", version.ref = "koin" }
+koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose", version.ref = "koin" }
+
+ktor-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor"}
+ktor-logging = { module = "io.ktor:ktor-client-logging", version.ref = "ktor"}
+androidx-constraintlayout-compose = { module = "androidx.constraintlayout:constraintlayout-compose", version.ref = "constraintlayoutCompose" }
+androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
+androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "lifecycleRuntimeKtx" }
+androidx-material-icons-core = { module = "androidx.compose.material:material-icons-core" , version.ref = "materialIcons"}
+androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" }
+coil-compose = { module = "io.coil-kt.coil3:coil-compose", version.ref = "coilCompose" }
+esclkt = { module = "io.github.chrisimx:esclkt", version.ref = "esclkt" }
+itext7-core = { module = "com.itextpdf:itext-core", version.ref = "itextCore" }
+junit = { group = "junit", name = "junit", version.ref = "junit" }
+androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
+androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
+androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
+androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
+androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
+androidx-ui = { group = "androidx.compose.ui", name = "ui" }
+androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
+androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
+androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
+androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
+androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
+androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" }
+kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlinReflect" }
+kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
+screengrab = { module = "tools.fastlane:screengrab", version.ref = "screengrab" }
+timber = { module = "com.jakewharton.timber:timber", version.ref = "timber" }
+zoomable = { module = "me.saket.telephoto:zoomable", version.ref = "zoomable" }
+protobuf-kotlin-lite = { module = "com.google.protobuf:protobuf-kotlin-lite", version.ref = "protobuf-kotlin-lite"}
+androidx-rules = { group = "androidx.test", name = "rules", version.ref = "rules" }
+
+escl-mock-server = { module = "io.github.chrisimx:escl-mock-server", version.ref = "escl-mock-server"}
+
+[plugins]
+android-application = { id = "com.android.application", version.ref = "agp" }
+kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
+kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
+versions = { id = "com.github.ben-manes.versions", version.ref = "versionsPlugin" }
+koin = { id = "io.insert-koin.compiler.plugin", version.ref = "koin-plugin" }
+protobuf = { id = "com.google.protobuf", version.ref = "protobuf-plugin" }
+room = { id = "androidx.room", version.ref = "room"}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/androidApp/proguard-rules.pro
similarity index 100%
rename from app/proguard-rules.pro
rename to androidApp/proguard-rules.pro
diff --git a/app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json b/androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json
similarity index 100%
rename from app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json
rename to androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/1.json
diff --git a/app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json b/androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json
similarity index 100%
rename from app/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json
rename to androidApp/schemas/io.github.chrisimx.scanbridge.db.ScanBridgeDb/2.json
diff --git a/app/src/androidTest/assets/scan-1.jpg b/androidApp/src/androidTest/assets/scan-1.jpg
similarity index 100%
rename from app/src/androidTest/assets/scan-1.jpg
rename to androidApp/src/androidTest/assets/scan-1.jpg
diff --git a/app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt b/androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt
similarity index 100%
rename from app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt
rename to androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt
diff --git a/app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt b/androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt
similarity index 100%
rename from app/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt
rename to androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/ScanBridgeTest.kt
diff --git a/app/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt b/androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt
similarity index 100%
rename from app/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt
rename to androidApp/src/androidTest/java/io/github/chrisimx/scanbridge/screenshot/ScanBridgeScreenshotTest.kt
diff --git a/app/src/debug/AndroidManifest.xml b/androidApp/src/debug/AndroidManifest.xml
similarity index 100%
rename from app/src/debug/AndroidManifest.xml
rename to androidApp/src/debug/AndroidManifest.xml
diff --git a/app/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt b/androidApp/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt
similarity index 100%
rename from app/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt
rename to androidApp/src/fdroid/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt
diff --git a/app/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml
similarity index 100%
rename from app/src/main/AndroidManifest.xml
rename to androidApp/src/main/AndroidManifest.xml
diff --git a/app/src/main/ic_launcher-playstore.png b/androidApp/src/main/ic_launcher-playstore.png
similarity index 100%
rename from app/src/main/ic_launcher-playstore.png
rename to androidApp/src/main/ic_launcher-playstore.png
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/AppSettingsScreen.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt
similarity index 96%
rename from app/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt
index 981beed2..5d196fb2 100644
--- a/app/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt
+++ b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashActivity.kt
@@ -13,7 +13,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
-import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
+// TODO: import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.FloatingActionButton
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
@@ -28,7 +28,7 @@ import io.github.chrisimx.scanbridge.theme.ScanBridgeTheme
import timber.log.Timber
class CrashActivity : ComponentActivity() {
- @OptIn(ExperimentalMaterial3ExpressiveApi::class)
+ // TODO: @OptIn(ExperimentalMaterial3ExpressiveApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
enableEdgeToEdge()
super.onCreate(savedInstanceState)
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/CrashHandler.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt
similarity index 97%
rename from app/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt
index 36597ab0..fbdd7f12 100644
--- a/app/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt
+++ b/androidApp/src/main/java/io/github/chrisimx/scanbridge/CropScreen.kt
@@ -6,7 +6,7 @@ import androidx.compose.animation.core.snap
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
-import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
+// TODO: import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.ExtendedFloatingActionButton
import androidx.compose.material3.FabPosition
import androidx.compose.material3.Icon
@@ -69,7 +69,7 @@ suspend fun finishCrop(cropRect: Rect, file: String): File? = withContext(Dispat
return@withContext croppedFile
}
-@OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalTelephotoApi::class)
+// TODO: @OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalTelephotoApi::class)
@Composable
fun CropScreen(scanId: Uuid, returnRoute: BaseRoute, navController: NavController) {
val context = LocalContext.current
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/MainActivity.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt
similarity index 97%
rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt
index 50578717..5d39c228 100644
--- a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt
+++ b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApp.kt
@@ -24,7 +24,7 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.rounded.Favorite
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.ExperimentalMaterial3Api
-import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
+// TODO: import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi
import androidx.compose.material3.Icon
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
@@ -59,7 +59,7 @@ import kotlinx.coroutines.withContext
import kotlinx.serialization.json.Json
import timber.log.Timber
-@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
+// TODO: @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class)
@Composable
fun ScanBridgeApp() {
ScanBridgeTheme {
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeApplication.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanBridgeNavHost.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanSettings.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerBrowser.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScannerDiscoveryBackend.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/ScanningScreen.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/StartupScreen.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/androidservice/ScanJobForegroundService.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/EditedCustomScanner.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacyESCLScanSettings.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/LegacySessionV2.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/PaperFormat.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/model/ScanJob.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/CustomScannerViewModel.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsComposableStateHolder.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanSettingsStateData.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenData.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/data/ui/ScanningScreenViewModel.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/DataStores.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/LastRouteStoreSerializer.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanBridgeSettingsSerializer.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ScanSettingsDataStoreHelpers.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/datastore/ShownMessagesSerializer.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/ScanBridgeDb.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/CustomScannerDao.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/ScannedPageDao.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/SessionDao.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/daos/TempFileDao.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/CustomScanner.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/ScannedPage.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/Session.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/entities/TempFile.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsTypeConverter.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/ScanSettingsUiDataTypeConverter.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UrlTypeConverter.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/db/typeconverters/UuidTypeConverter.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/logs/FileLogger.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/AndroidLocaleProvider.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/DebugLogService.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/FileDebugLogService.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/LocaleProvider.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/services/ScanJobRepository.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/DefaultScanSettingsStore.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacyCustomScannerStore.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/stores/LegacySessionsStore.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Color.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Font.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Theme.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/theme/Typography.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CrashFileHandler.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/CroppableImage.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ExportSettingsPopup.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FoundScannerItem.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/FullScreenError.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/LoadingScreen.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/SizeBasedConditionalView.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TemporaryFileHandlePrompt.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/TitledCard.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/ValidatedTextField.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ConfirmCloseDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CrashFileDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/CustomScannerDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/DeleteDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/ErrorDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/LoadingDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/SimpleTextDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/dialog/TemporaryFileHandlingDialog.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/CheckboxSetting.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/MoreInformationButton.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/UIntSetting.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/uicomponents/settings/VersionComposable.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ESCLKtExtensions.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ImageUtil.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/NavControllerExtensions.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/PdfUtil.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanFileNameUtil.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ScanSettingsJson.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/StateFlowExtensions.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TempFileUtil.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/TrustAllTrustManager.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/UIUtils.kt
diff --git a/app/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt b/androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt
similarity index 100%
rename from app/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt
rename to androidApp/src/main/java/io/github/chrisimx/scanbridge/util/ZipArchiveUtil.kt
diff --git a/app/src/main/proto/app_settings.proto b/androidApp/src/main/proto/app_settings.proto
similarity index 100%
rename from app/src/main/proto/app_settings.proto
rename to androidApp/src/main/proto/app_settings.proto
diff --git a/app/src/main/proto/route_store.proto b/androidApp/src/main/proto/route_store.proto
similarity index 100%
rename from app/src/main/proto/route_store.proto
rename to androidApp/src/main/proto/route_store.proto
diff --git a/app/src/main/proto/shown_messages.proto b/androidApp/src/main/proto/shown_messages.proto
similarity index 100%
rename from app/src/main/proto/shown_messages.proto
rename to androidApp/src/main/proto/shown_messages.proto
diff --git a/app/src/main/res/drawable/baseline_image_24.xml b/androidApp/src/main/res/drawable/baseline_image_24.xml
similarity index 100%
rename from app/src/main/res/drawable/baseline_image_24.xml
rename to androidApp/src/main/res/drawable/baseline_image_24.xml
diff --git a/app/src/main/res/drawable/baseline_picture_as_pdf_24.xml b/androidApp/src/main/res/drawable/baseline_picture_as_pdf_24.xml
similarity index 100%
rename from app/src/main/res/drawable/baseline_picture_as_pdf_24.xml
rename to androidApp/src/main/res/drawable/baseline_picture_as_pdf_24.xml
diff --git a/app/src/main/res/drawable/baseline_rotate_right_24.xml b/androidApp/src/main/res/drawable/baseline_rotate_right_24.xml
similarity index 100%
rename from app/src/main/res/drawable/baseline_rotate_right_24.xml
rename to androidApp/src/main/res/drawable/baseline_rotate_right_24.xml
diff --git a/app/src/main/res/drawable/favorite_24px.xml b/androidApp/src/main/res/drawable/favorite_24px.xml
similarity index 100%
rename from app/src/main/res/drawable/favorite_24px.xml
rename to androidApp/src/main/res/drawable/favorite_24px.xml
diff --git a/app/src/main/res/drawable/github_mark.xml b/androidApp/src/main/res/drawable/github_mark.xml
similarity index 100%
rename from app/src/main/res/drawable/github_mark.xml
rename to androidApp/src/main/res/drawable/github_mark.xml
diff --git a/app/src/main/res/drawable/icon_about_dialog.png b/androidApp/src/main/res/drawable/icon_about_dialog.png
similarity index 100%
rename from app/src/main/res/drawable/icon_about_dialog.png
rename to androidApp/src/main/res/drawable/icon_about_dialog.png
diff --git a/app/src/main/res/drawable/outline_crop_24.xml b/androidApp/src/main/res/drawable/outline_crop_24.xml
similarity index 100%
rename from app/src/main/res/drawable/outline_crop_24.xml
rename to androidApp/src/main/res/drawable/outline_crop_24.xml
diff --git a/app/src/main/res/drawable/outline_edit_24.xml b/androidApp/src/main/res/drawable/outline_edit_24.xml
similarity index 100%
rename from app/src/main/res/drawable/outline_edit_24.xml
rename to androidApp/src/main/res/drawable/outline_edit_24.xml
diff --git a/app/src/main/res/drawable/outline_error_24.xml b/androidApp/src/main/res/drawable/outline_error_24.xml
similarity index 100%
rename from app/src/main/res/drawable/outline_error_24.xml
rename to androidApp/src/main/res/drawable/outline_error_24.xml
diff --git a/app/src/main/res/drawable/outline_file_save_24.xml b/androidApp/src/main/res/drawable/outline_file_save_24.xml
similarity index 100%
rename from app/src/main/res/drawable/outline_file_save_24.xml
rename to androidApp/src/main/res/drawable/outline_file_save_24.xml
diff --git a/app/src/main/res/drawable/outline_pan_zoom_24.xml b/androidApp/src/main/res/drawable/outline_pan_zoom_24.xml
similarity index 100%
rename from app/src/main/res/drawable/outline_pan_zoom_24.xml
rename to androidApp/src/main/res/drawable/outline_pan_zoom_24.xml
diff --git a/app/src/main/res/drawable/outline_scan_24.xml b/androidApp/src/main/res/drawable/outline_scan_24.xml
similarity index 100%
rename from app/src/main/res/drawable/outline_scan_24.xml
rename to androidApp/src/main/res/drawable/outline_scan_24.xml
diff --git a/app/src/main/res/drawable/round_print_36.xml b/androidApp/src/main/res/drawable/round_print_36.xml
similarity index 100%
rename from app/src/main/res/drawable/round_print_36.xml
rename to androidApp/src/main/res/drawable/round_print_36.xml
diff --git a/app/src/main/res/drawable/rounded_adf_scanner_24.xml b/androidApp/src/main/res/drawable/rounded_adf_scanner_24.xml
similarity index 100%
rename from app/src/main/res/drawable/rounded_adf_scanner_24.xml
rename to androidApp/src/main/res/drawable/rounded_adf_scanner_24.xml
diff --git a/app/src/main/res/drawable/rounded_content_copy_24.xml b/androidApp/src/main/res/drawable/rounded_content_copy_24.xml
similarity index 100%
rename from app/src/main/res/drawable/rounded_content_copy_24.xml
rename to androidApp/src/main/res/drawable/rounded_content_copy_24.xml
diff --git a/app/src/main/res/drawable/rounded_document_scanner_24.xml b/androidApp/src/main/res/drawable/rounded_document_scanner_24.xml
similarity index 100%
rename from app/src/main/res/drawable/rounded_document_scanner_24.xml
rename to androidApp/src/main/res/drawable/rounded_document_scanner_24.xml
diff --git a/app/src/main/res/drawable/rounded_scanner_24.xml b/androidApp/src/main/res/drawable/rounded_scanner_24.xml
similarity index 100%
rename from app/src/main/res/drawable/rounded_scanner_24.xml
rename to androidApp/src/main/res/drawable/rounded_scanner_24.xml
diff --git a/app/src/main/res/drawable/rounded_warning_24.xml b/androidApp/src/main/res/drawable/rounded_warning_24.xml
similarity index 100%
rename from app/src/main/res/drawable/rounded_warning_24.xml
rename to androidApp/src/main/res/drawable/rounded_warning_24.xml
diff --git a/app/src/main/res/drawable/twotone_wifi_find_24.xml b/androidApp/src/main/res/drawable/twotone_wifi_find_24.xml
similarity index 100%
rename from app/src/main/res/drawable/twotone_wifi_find_24.xml
rename to androidApp/src/main/res/drawable/twotone_wifi_find_24.xml
diff --git a/app/src/main/res/font/poppins_black.ttf b/androidApp/src/main/res/font/poppins_black.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_black.ttf
rename to androidApp/src/main/res/font/poppins_black.ttf
diff --git a/app/src/main/res/font/poppins_blackitalic.ttf b/androidApp/src/main/res/font/poppins_blackitalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_blackitalic.ttf
rename to androidApp/src/main/res/font/poppins_blackitalic.ttf
diff --git a/app/src/main/res/font/poppins_bold.ttf b/androidApp/src/main/res/font/poppins_bold.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_bold.ttf
rename to androidApp/src/main/res/font/poppins_bold.ttf
diff --git a/app/src/main/res/font/poppins_bolditalic.ttf b/androidApp/src/main/res/font/poppins_bolditalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_bolditalic.ttf
rename to androidApp/src/main/res/font/poppins_bolditalic.ttf
diff --git a/app/src/main/res/font/poppins_extrabold.ttf b/androidApp/src/main/res/font/poppins_extrabold.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_extrabold.ttf
rename to androidApp/src/main/res/font/poppins_extrabold.ttf
diff --git a/app/src/main/res/font/poppins_extrabolditalic.ttf b/androidApp/src/main/res/font/poppins_extrabolditalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_extrabolditalic.ttf
rename to androidApp/src/main/res/font/poppins_extrabolditalic.ttf
diff --git a/app/src/main/res/font/poppins_extralight.ttf b/androidApp/src/main/res/font/poppins_extralight.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_extralight.ttf
rename to androidApp/src/main/res/font/poppins_extralight.ttf
diff --git a/app/src/main/res/font/poppins_extralightitalic.ttf b/androidApp/src/main/res/font/poppins_extralightitalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_extralightitalic.ttf
rename to androidApp/src/main/res/font/poppins_extralightitalic.ttf
diff --git a/app/src/main/res/font/poppins_italic.ttf b/androidApp/src/main/res/font/poppins_italic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_italic.ttf
rename to androidApp/src/main/res/font/poppins_italic.ttf
diff --git a/app/src/main/res/font/poppins_light.ttf b/androidApp/src/main/res/font/poppins_light.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_light.ttf
rename to androidApp/src/main/res/font/poppins_light.ttf
diff --git a/app/src/main/res/font/poppins_lightitalic.ttf b/androidApp/src/main/res/font/poppins_lightitalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_lightitalic.ttf
rename to androidApp/src/main/res/font/poppins_lightitalic.ttf
diff --git a/app/src/main/res/font/poppins_medium.ttf b/androidApp/src/main/res/font/poppins_medium.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_medium.ttf
rename to androidApp/src/main/res/font/poppins_medium.ttf
diff --git a/app/src/main/res/font/poppins_mediumitalic.ttf b/androidApp/src/main/res/font/poppins_mediumitalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_mediumitalic.ttf
rename to androidApp/src/main/res/font/poppins_mediumitalic.ttf
diff --git a/app/src/main/res/font/poppins_regular.ttf b/androidApp/src/main/res/font/poppins_regular.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_regular.ttf
rename to androidApp/src/main/res/font/poppins_regular.ttf
diff --git a/app/src/main/res/font/poppins_semibold.ttf b/androidApp/src/main/res/font/poppins_semibold.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_semibold.ttf
rename to androidApp/src/main/res/font/poppins_semibold.ttf
diff --git a/app/src/main/res/font/poppins_semibolditalic.ttf b/androidApp/src/main/res/font/poppins_semibolditalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_semibolditalic.ttf
rename to androidApp/src/main/res/font/poppins_semibolditalic.ttf
diff --git a/app/src/main/res/font/poppins_thin.ttf b/androidApp/src/main/res/font/poppins_thin.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_thin.ttf
rename to androidApp/src/main/res/font/poppins_thin.ttf
diff --git a/app/src/main/res/font/poppins_thinitalic.ttf b/androidApp/src/main/res/font/poppins_thinitalic.ttf
similarity index 100%
rename from app/src/main/res/font/poppins_thinitalic.ttf
rename to androidApp/src/main/res/font/poppins_thinitalic.ttf
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
similarity index 100%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
rename to androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
similarity index 100%
rename from app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
rename to androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher.webp
rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_background.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher_background.webp
rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher_background.webp
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
rename to androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher.webp
rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_background.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher_background.webp
rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher_background.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
rename to androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher.webp
rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_background.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher_background.webp
rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher_background.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
rename to androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp
rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_background.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
rename to androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp
rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_background.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
similarity index 100%
rename from app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
rename to androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
diff --git a/app/src/main/res/raw/test_scanner_capabilities b/androidApp/src/main/res/raw/test_scanner_capabilities
similarity index 100%
rename from app/src/main/res/raw/test_scanner_capabilities
rename to androidApp/src/main/res/raw/test_scanner_capabilities
diff --git a/app/src/main/res/resources.properties b/androidApp/src/main/res/resources.properties
similarity index 100%
rename from app/src/main/res/resources.properties
rename to androidApp/src/main/res/resources.properties
diff --git a/app/src/main/res/values-de/strings.xml b/androidApp/src/main/res/values-de/strings.xml
similarity index 100%
rename from app/src/main/res/values-de/strings.xml
rename to androidApp/src/main/res/values-de/strings.xml
diff --git a/app/src/main/res/values-it/strings.xml b/androidApp/src/main/res/values-it/strings.xml
similarity index 100%
rename from app/src/main/res/values-it/strings.xml
rename to androidApp/src/main/res/values-it/strings.xml
diff --git a/app/src/main/res/values/colors.xml b/androidApp/src/main/res/values/colors.xml
similarity index 100%
rename from app/src/main/res/values/colors.xml
rename to androidApp/src/main/res/values/colors.xml
diff --git a/app/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml
similarity index 100%
rename from app/src/main/res/values/strings.xml
rename to androidApp/src/main/res/values/strings.xml
diff --git a/app/src/main/res/values/themes.xml b/androidApp/src/main/res/values/themes.xml
similarity index 100%
rename from app/src/main/res/values/themes.xml
rename to androidApp/src/main/res/values/themes.xml
diff --git a/app/src/main/res/xml/backup_rules.xml b/androidApp/src/main/res/xml/backup_rules.xml
similarity index 100%
rename from app/src/main/res/xml/backup_rules.xml
rename to androidApp/src/main/res/xml/backup_rules.xml
diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/androidApp/src/main/res/xml/data_extraction_rules.xml
similarity index 100%
rename from app/src/main/res/xml/data_extraction_rules.xml
rename to androidApp/src/main/res/xml/data_extraction_rules.xml
diff --git a/app/src/main/res/xml/network_security_config.xml b/androidApp/src/main/res/xml/network_security_config.xml
similarity index 100%
rename from app/src/main/res/xml/network_security_config.xml
rename to androidApp/src/main/res/xml/network_security_config.xml
diff --git a/app/src/main/res/xml/provider_paths.xml b/androidApp/src/main/res/xml/provider_paths.xml
similarity index 100%
rename from app/src/main/res/xml/provider_paths.xml
rename to androidApp/src/main/res/xml/provider_paths.xml
diff --git a/app/src/play/AndroidManifest.xml b/androidApp/src/play/AndroidManifest.xml
similarity index 100%
rename from app/src/play/AndroidManifest.xml
rename to androidApp/src/play/AndroidManifest.xml
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/AccountSetupScreen.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/InternetConnectivityFlow.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/LicenseErrorStringMapping.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipProofService.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/OwnershipTestScreen.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/PlainTextObfuscator.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SignupScreen.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SimpleStrictLicensePolicy.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SpecialIcons.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/StartupTabDefinitions.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SuccessSigningUpScreen.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/SupportScreen.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerificationClient.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/AccountVerifierApi.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/AccountCreationRequest.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/GoogleChallenge.kt
diff --git a/app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt b/androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt
similarity index 100%
rename from app/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt
rename to androidApp/src/play/java/io/github/chrisimx/scanbridge/zammadapi/models/VIPCreationResult.kt
diff --git a/app/src/play/res/drawable/fireamp_icon.xml b/androidApp/src/play/res/drawable/fireamp_icon.xml
similarity index 100%
rename from app/src/play/res/drawable/fireamp_icon.xml
rename to androidApp/src/play/res/drawable/fireamp_icon.xml
diff --git a/app/src/play/res/drawable/outline_globe_24.xml b/androidApp/src/play/res/drawable/outline_globe_24.xml
similarity index 100%
rename from app/src/play/res/drawable/outline_globe_24.xml
rename to androidApp/src/play/res/drawable/outline_globe_24.xml
diff --git a/app/src/play/res/values-de/strings.xml b/androidApp/src/play/res/values-de/strings.xml
similarity index 100%
rename from app/src/play/res/values-de/strings.xml
rename to androidApp/src/play/res/values-de/strings.xml
diff --git a/app/src/play/res/values-it/strings.xml b/androidApp/src/play/res/values-it/strings.xml
similarity index 100%
rename from app/src/play/res/values-it/strings.xml
rename to androidApp/src/play/res/values-it/strings.xml
diff --git a/app/src/play/res/values/strings.xml b/androidApp/src/play/res/values/strings.xml
similarity index 100%
rename from app/src/play/res/values/strings.xml
rename to androidApp/src/play/res/values/strings.xml
diff --git a/app/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt b/androidApp/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt
similarity index 100%
rename from app/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt
rename to androidApp/src/test/java/org/github/chrisimx/scanbridge/PaperFormatTest.kt
diff --git a/app/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt b/androidApp/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt
similarity index 100%
rename from app/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt
rename to androidApp/src/test/java/org/github/chrisimx/scanbridge/ScanSettingsStoreTest.kt
diff --git a/build.gradle.kts b/build.gradle.kts
index d497f649..c70a45c6 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,9 +1,13 @@
import com.github.benmanes.gradle.versions.updates.DependencyUpdatesTask
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
- alias(libs.plugins.android.application) apply false
- alias(libs.plugins.kotlin.compose) apply false
+ alias(libs.plugins.kotlin.multiplatform).apply(false)
+ alias(libs.plugins.compose.compiler).apply(false)
+ alias(libs.plugins.compose.multiplatform).apply(false)
+ alias(libs.plugins.kotlin.android).apply(false)
+ alias(libs.plugins.android.application).apply(false)
+ alias(libs.plugins.android.kmp.library).apply(false)
+ alias(libs.plugins.kotlin.jvm).apply(false)
alias(libs.plugins.versions)
}
diff --git a/desktopApp/appIcons/LinuxIcon.png b/desktopApp/appIcons/LinuxIcon.png
new file mode 100644
index 00000000..a2a45177
Binary files /dev/null and b/desktopApp/appIcons/LinuxIcon.png differ
diff --git a/desktopApp/appIcons/MacosIcon.icns b/desktopApp/appIcons/MacosIcon.icns
new file mode 100644
index 00000000..083def59
Binary files /dev/null and b/desktopApp/appIcons/MacosIcon.icns differ
diff --git a/desktopApp/appIcons/WindowsIcon.ico b/desktopApp/appIcons/WindowsIcon.ico
new file mode 100644
index 00000000..7e9ab754
Binary files /dev/null and b/desktopApp/appIcons/WindowsIcon.ico differ
diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts
new file mode 100644
index 00000000..ab291430
--- /dev/null
+++ b/desktopApp/build.gradle.kts
@@ -0,0 +1,33 @@
+import org.jetbrains.compose.desktop.application.dsl.TargetFormat
+
+plugins {
+ alias(libs.plugins.compose.compiler)
+ alias(libs.plugins.compose.multiplatform)
+ alias(libs.plugins.kotlin.jvm)
+}
+dependencies {
+ implementation(project(":shared"))
+}
+
+compose.desktop {
+ application {
+ mainClass = "MainKt"
+
+ nativeDistributions {
+ targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
+ packageName = "ScanBridge"
+ packageVersion = "1.0.0"
+
+ linux {
+ iconFile.set(project.file("appIcons/LinuxIcon.png"))
+ }
+ windows {
+ iconFile.set(project.file("appIcons/WindowsIcon.ico"))
+ }
+ macOS {
+ iconFile.set(project.file("appIcons/MacosIcon.icns"))
+ bundleID = "io.github.chrisimx.scanbridge.desktopApp"
+ }
+ }
+ }
+}
diff --git a/desktopApp/src/main/kotlin/main.kt b/desktopApp/src/main/kotlin/main.kt
new file mode 100644
index 00000000..65386b06
--- /dev/null
+++ b/desktopApp/src/main/kotlin/main.kt
@@ -0,0 +1,18 @@
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.window.Window
+import androidx.compose.ui.window.application
+import androidx.compose.ui.window.rememberWindowState
+import java.awt.Dimension
+import io.github.chrisimx.scanbridge.App
+
+fun main() = application {
+ Window(
+ title = "ScanBridge",
+ state = rememberWindowState(width = 800.dp, height = 600.dp),
+ onCloseRequest = ::exitApplication,
+ ) {
+ window.minimumSize = Dimension(350, 600)
+ App()
+ }
+}
+
diff --git a/gradle.properties b/gradle.properties
index 3ce09d6d..fa120c01 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,12 +1,28 @@
+#Gradle
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx4G -Dfile.encoding=UTF-8
+org.gradle.caching=true
+org.gradle.configuration-cache=true
+org.gradle.daemon=true
+org.gradle.parallel=true
+
+#Kotlin
+kotlin.daemon.jvmargs=-Xmx4G
+kotlin.native.binary.gc=cms
+kotlin.incremental.wasm=true
+
+#https://youtrack.jetbrains.com/issue/KT-82395
+kotlin.incremental.js=false
+kotlin.incremental.js.klib=false
+
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
+
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. For more details, visit
# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
diff --git a/gradle/gradle-daemon-jvm.properties b/gradle/gradle-daemon-jvm.properties
index c4e7acbd..5c34300f 100644
--- a/gradle/gradle-daemon-jvm.properties
+++ b/gradle/gradle-daemon-jvm.properties
@@ -1,13 +1,13 @@
#This file is generated by updateDaemonJvm
-toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect
-toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
-toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/536afcd1dff540251f85e5d2c80458cf/redirect
-toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
-toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/0b98aec810298c2c1d7fdac5dac37910/redirect
-toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/658299a896470fbb3103ba3a430ee227/redirect
-toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/29ee363f71d060405f729a8f1b7f7aef/redirect
-toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/67a0fee3c4236b6397dcbe8575ca2011/redirect
-toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/248ffb1098f61659502d0c09aa348294/redirect
-toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/ac151d55def6b6a9a159dc4cb4642851/redirect
+toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect
+toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect
+toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect
+toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect
+toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e99bae143b75f9a10ead10248f02055e/redirect
+toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/04e088f8677de3b384108493cc9481d0/redirect
+toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/56a19bc915b9ba2eb62ba7554c61b919/redirect
+toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/398ffe3949748bfb1d5636f023d228fd/redirect
+toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/e55dccbfe27cb97945148c61a39c89c5/redirect
+toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/dbd05c4936d573642f94cd149e1356c8/redirect
toolchainVendor=JETBRAINS
toolchainVersion=21
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index e546184f..d52b88fc 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,4 +1,8 @@
[versions]
+
+compose-multiplatform = "1.10.3"
+androidx-activityCompose = "1.12.0"
+
agp = "9.1.0"
coilCompose = "3.3.0"
constraintlayoutCompose = "1.1.1"
@@ -15,11 +19,12 @@ kotlinReflect = "2.1.20"
kotlinxSerializationJson = "1.9.0"
lifecycleRuntimeKtx = "2.9.4"
activityCompose = "1.11.0"
-composeBom = "2025.10.00"
+composeBom = "2026.03.01"
room = "2.8.4"
timber = "5.0.1"
zoomable = "0.18.0"
-material3 = "1.5.0-alpha06"
+material3 = "1.11.0-alpha05"
+androidx-material3 = "1.5.0-alpha16"
materialIcons = "1.7.8"
navigationCompose = "2.9.5"
versionsPlugin = "0.53.0"
@@ -33,6 +38,16 @@ rules = "1.7.0"
[libraries]
+compose-runtime = { module = "org.jetbrains.compose.runtime:runtime", version.ref = "compose-multiplatform" }
+compose-ui = { module = "org.jetbrains.compose.ui:ui", version.ref = "compose-multiplatform" }
+compose-foundation = { module = "org.jetbrains.compose.foundation:foundation", version.ref = "compose-multiplatform" }
+compose-resources = { module = "org.jetbrains.compose.components:components-resources", version.ref = "compose-multiplatform" }
+compose-ui-tooling-preview = { module = "org.jetbrains.compose.ui:ui-tooling-preview", version.ref = "compose-multiplatform" }
+compose-ui-tooling = { module = "org.jetbrains.compose.ui:ui-tooling", version.ref = "compose-multiplatform" }
+compose-ui-test = { module = "org.jetbrains.compose.ui:ui-test", version.ref = "compose-multiplatform" }
+compose-material3 = { module = "org.jetbrains.compose.material3:material3", version.ref = "material3" }
+androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
+
androidx-datastore = { module = "androidx.datastore:datastore", version.ref = "datastore" }
androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
@@ -71,7 +86,6 @@ junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
-androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "composeBom" }
androidx-ui = { group = "androidx.compose.ui", name = "ui" }
androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" }
@@ -79,7 +93,7 @@ androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" }
androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" }
androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }
-androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" }
+androidx-material3 = { module = "androidx.compose.material3:material3", version.ref= "androidx-material3" }
kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect", version.ref = "kotlinReflect" }
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" }
screengrab = { module = "tools.fastlane:screengrab", version.ref = "screengrab" }
@@ -91,7 +105,15 @@ androidx-rules = { group = "androidx.test", name = "rules", version.ref = "rules
escl-mock-server = { module = "io.github.chrisimx:escl-mock-server", version.ref = "escl-mock-server"}
[plugins]
+
+kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
+compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
+compose-multiplatform = { id = "org.jetbrains.compose", version.ref = "compose-multiplatform" }
+kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
android-application = { id = "com.android.application", version.ref = "agp" }
+android-kmp-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" }
+kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
+
kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
versions = { id = "com.github.ben-manes.versions", version.ref = "versionsPlugin" }
diff --git a/iosApp/iosApp.xcodeproj/project.pbxproj b/iosApp/iosApp.xcodeproj/project.pbxproj
new file mode 100644
index 00000000..6a909580
--- /dev/null
+++ b/iosApp/iosApp.xcodeproj/project.pbxproj
@@ -0,0 +1,362 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 56;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ A93A953B29CC810C00F8E227 /* iosApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = A93A953A29CC810C00F8E227 /* iosApp.swift */; };
+ A93A953F29CC810D00F8E227 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A93A953E29CC810D00F8E227 /* Assets.xcassets */; };
+ A93A954229CC810D00F8E227 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A93A954129CC810D00F8E227 /* Preview Assets.xcassets */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ A93A953729CC810C00F8E227 /* ScanBridge.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ScanBridge.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ A93A953A29CC810C00F8E227 /* iosApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iosApp.swift; sourceTree = ""; };
+ A93A953E29CC810D00F8E227 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
+ A93A954129CC810D00F8E227 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ A93A953429CC810C00F8E227 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ A93A952E29CC810C00F8E227 = {
+ isa = PBXGroup;
+ children = (
+ A93A953929CC810C00F8E227 /* iosApp */,
+ A93A953829CC810C00F8E227 /* Products */,
+ C4127409AE3703430489E7BC /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ A93A953829CC810C00F8E227 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ A93A953729CC810C00F8E227 /* ScanBridge.app */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ A93A953929CC810C00F8E227 /* iosApp */ = {
+ isa = PBXGroup;
+ children = (
+ A93A953A29CC810C00F8E227 /* iosApp.swift */,
+ A93A953E29CC810D00F8E227 /* Assets.xcassets */,
+ A93A954029CC810D00F8E227 /* Preview Content */,
+ );
+ path = iosApp;
+ sourceTree = "";
+ };
+ A93A954029CC810D00F8E227 /* Preview Content */ = {
+ isa = PBXGroup;
+ children = (
+ A93A954129CC810D00F8E227 /* Preview Assets.xcassets */,
+ );
+ path = "Preview Content";
+ sourceTree = "";
+ };
+ C4127409AE3703430489E7BC /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ A93A953629CC810C00F8E227 /* iosApp */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = A93A954529CC810D00F8E227 /* Build configuration list for PBXNativeTarget "iosApp" */;
+ buildPhases = (
+ A9D80A052AAB5CDE006C8738 /* ShellScript */,
+ A93A953329CC810C00F8E227 /* Sources */,
+ A93A953429CC810C00F8E227 /* Frameworks */,
+ A93A953529CC810C00F8E227 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = iosApp;
+ productName = iosApp;
+ productReference = A93A953729CC810C00F8E227 /* ScanBridge.app */;
+ productType = "com.apple.product-type.application";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ A93A952F29CC810C00F8E227 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ LastSwiftUpdateCheck = 1420;
+ LastUpgradeCheck = 1420;
+ TargetAttributes = {
+ A93A953629CC810C00F8E227 = {
+ CreatedOnToolsVersion = 14.2;
+ };
+ };
+ };
+ buildConfigurationList = A93A953229CC810C00F8E227 /* Build configuration list for PBXProject "iosApp" */;
+ compatibilityVersion = "Xcode 14.0";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ Base,
+ );
+ mainGroup = A93A952E29CC810C00F8E227;
+ productRefGroup = A93A953829CC810C00F8E227 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ A93A953629CC810C00F8E227 /* iosApp */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ A93A953529CC810C00F8E227 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A93A954229CC810D00F8E227 /* Preview Assets.xcassets in Resources */,
+ A93A953F29CC810D00F8E227 /* Assets.xcassets in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXShellScriptBuildPhase section */
+ A9D80A052AAB5CDE006C8738 /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \\\"YES\\\"\"\n exit 0\nfi\ncd \"$SRCROOT/..\"\n./gradlew :sharedUI:embedAndSignAppleFrameworkForXcode\n";
+ };
+/* End PBXShellScriptBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ A93A953329CC810C00F8E227 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ A93A953B29CC810C00F8E227 /* iosApp.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ A93A954329CC810D00F8E227 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ };
+ name = Debug;
+ };
+ A93A954429CC810D00F8E227 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COPY_PHASE_STRIP = NO;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.2;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ };
+ name = Release;
+ };
+ A93A954629CC810D00F8E227 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
+ DEVELOPMENT_TEAM = 3MGF2AU6D9;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = iosApp/Info.plist;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = io.github.chrisimx.scanbridge.iosApp;
+ PRODUCT_NAME = ScanBridge;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Debug;
+ };
+ A93A954729CC810D00F8E227 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 1;
+ DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
+ DEVELOPMENT_TEAM = 3MGF2AU6D9;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = iosApp/Info.plist;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 1.0;
+ PRODUCT_BUNDLE_IDENTIFIER = io.github.chrisimx.scanbridge.iosApp;
+ PRODUCT_NAME = ScanBridge;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ A93A953229CC810C00F8E227 /* Build configuration list for PBXProject "iosApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A93A954329CC810D00F8E227 /* Debug */,
+ A93A954429CC810D00F8E227 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ A93A954529CC810D00F8E227 /* Build configuration list for PBXNativeTarget "iosApp" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ A93A954629CC810D00F8E227 /* Debug */,
+ A93A954729CC810D00F8E227 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = A93A952F29CC810C00F8E227 /* Project object */;
+}
diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 00000000..919434a6
--- /dev/null
+++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,7 @@
+
+
+
+
+
diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/UserInterfaceState.xcuserstate b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/UserInterfaceState.xcuserstate
new file mode 100644
index 00000000..7a97afe7
Binary files /dev/null and b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/UserInterfaceState.xcuserstate differ
diff --git a/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 00000000..ee3458dd
--- /dev/null
+++ b/iosApp/iosApp.xcodeproj/project.xcworkspace/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/iosApp.xcscheme b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/iosApp.xcscheme
new file mode 100644
index 00000000..9c8bccd5
--- /dev/null
+++ b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/iosApp.xcscheme
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist
new file mode 100644
index 00000000..fa59f97d
--- /dev/null
+++ b/iosApp/iosApp.xcodeproj/xcuserdata/christian.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -0,0 +1,14 @@
+
+
+
+
+ SchemeUserState
+
+ iosApp.xcscheme
+
+ orderHint
+ 0
+
+
+
+
diff --git a/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json b/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json
new file mode 100644
index 00000000..eb878970
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json
@@ -0,0 +1,11 @@
+{
+ "colors" : [
+ {
+ "idiom" : "universal"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png
new file mode 100644
index 00000000..41a92ea6
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png
new file mode 100644
index 00000000..41a92ea6
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@2x~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png
new file mode 100644
index 00000000..ff64c69d
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20@3x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png
new file mode 100644
index 00000000..5fb4c436
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-20~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png
new file mode 100644
index 00000000..c7f7f027
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png
new file mode 100644
index 00000000..9068381f
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png
new file mode 100644
index 00000000..9068381f
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@2x~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png
new file mode 100644
index 00000000..45522520
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29@3x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png
new file mode 100644
index 00000000..c7f7f027
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-29~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png
new file mode 100644
index 00000000..ddd8c8f1
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png
new file mode 100644
index 00000000..ddd8c8f1
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@2x~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png
new file mode 100644
index 00000000..761f8213
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40@3x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png
new file mode 100644
index 00000000..41a92ea6
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-40~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png
new file mode 100644
index 00000000..761f8213
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x~car.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png
new file mode 100644
index 00000000..276a950e
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-60@3x~car.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png
new file mode 100644
index 00000000..9e23219b
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon-83.5@2x~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png
new file mode 100644
index 00000000..761f8213
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png
new file mode 100644
index 00000000..59ac0abc
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@2x~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png
new file mode 100644
index 00000000..276a950e
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon@3x.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png
new file mode 100644
index 00000000..ef951ed2
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ios-marketing.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png
new file mode 100644
index 00000000..1923af1a
Binary files /dev/null and b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/AppIcon~ipad.png differ
diff --git a/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 00000000..3be3dd8c
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,130 @@
+{
+ "images": [
+ {
+ "filename": "AppIcon@2x.png",
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "60x60"
+ },
+ {
+ "filename": "AppIcon@3x.png",
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "60x60"
+ },
+ {
+ "filename": "AppIcon~ipad.png",
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "76x76"
+ },
+ {
+ "filename": "AppIcon@2x~ipad.png",
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "76x76"
+ },
+ {
+ "filename": "AppIcon-83.5@2x~ipad.png",
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "83.5x83.5"
+ },
+ {
+ "filename": "AppIcon-40@2x.png",
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "40x40"
+ },
+ {
+ "filename": "AppIcon-40@3x.png",
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "40x40"
+ },
+ {
+ "filename": "AppIcon-40~ipad.png",
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "40x40"
+ },
+ {
+ "filename": "AppIcon-40@2x~ipad.png",
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "40x40"
+ },
+ {
+ "filename": "AppIcon-20@2x.png",
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "20x20"
+ },
+ {
+ "filename": "AppIcon-20@3x.png",
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "20x20"
+ },
+ {
+ "filename": "AppIcon-20~ipad.png",
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "20x20"
+ },
+ {
+ "filename": "AppIcon-20@2x~ipad.png",
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "20x20"
+ },
+ {
+ "filename": "AppIcon-29.png",
+ "idiom": "iphone",
+ "scale": "1x",
+ "size": "29x29"
+ },
+ {
+ "filename": "AppIcon-29@2x.png",
+ "idiom": "iphone",
+ "scale": "2x",
+ "size": "29x29"
+ },
+ {
+ "filename": "AppIcon-29@3x.png",
+ "idiom": "iphone",
+ "scale": "3x",
+ "size": "29x29"
+ },
+ {
+ "filename": "AppIcon-29~ipad.png",
+ "idiom": "ipad",
+ "scale": "1x",
+ "size": "29x29"
+ },
+ {
+ "filename": "AppIcon-29@2x~ipad.png",
+ "idiom": "ipad",
+ "scale": "2x",
+ "size": "29x29"
+ },
+ {
+ "filename": "AppIcon-60@2x~car.png",
+ "idiom": "car",
+ "scale": "2x",
+ "size": "60x60"
+ },
+ {
+ "filename": "AppIcon-60@3x~car.png",
+ "idiom": "car",
+ "scale": "3x",
+ "size": "60x60"
+ },
+ {
+ "filename": "AppIcon~ios-marketing.png",
+ "idiom": "ios-marketing",
+ "scale": "1x",
+ "size": "1024x1024"
+ }
+ ]
+}
diff --git a/iosApp/iosApp/Assets.xcassets/Contents.json b/iosApp/iosApp/Assets.xcassets/Contents.json
new file mode 100644
index 00000000..73c00596
--- /dev/null
+++ b/iosApp/iosApp/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/Info.plist b/iosApp/iosApp/Info.plist
new file mode 100644
index 00000000..11845e1d
--- /dev/null
+++ b/iosApp/iosApp/Info.plist
@@ -0,0 +1,8 @@
+
+
+
+
+ CADisableMinimumFrameDurationOnPhone
+
+
+
diff --git a/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json b/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json
new file mode 100644
index 00000000..73c00596
--- /dev/null
+++ b/iosApp/iosApp/Preview Content/Preview Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ }
+}
diff --git a/iosApp/iosApp/iosApp.swift b/iosApp/iosApp/iosApp.swift
new file mode 100644
index 00000000..0e4b3035
--- /dev/null
+++ b/iosApp/iosApp/iosApp.swift
@@ -0,0 +1,21 @@
+import SwiftUI
+import SharedUI
+
+@main
+struct ComposeApp: App {
+ var body: some Scene {
+ WindowGroup {
+ ContentView().ignoresSafeArea(.all)
+ }
+ }
+}
+
+struct ContentView: UIViewControllerRepresentable {
+ func makeUIViewController(context: Context) -> UIViewController {
+ return MainKt.MainViewController()
+ }
+
+ func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
+ // Updates will be handled by Compose
+ }
+}
diff --git a/libraries/play-licensing/lvl_library/build.gradle b/libraries/play-licensing/lvl_library/build.gradle
index afaf0fa8..5f9aba84 100644
--- a/libraries/play-licensing/lvl_library/build.gradle
+++ b/libraries/play-licensing/lvl_library/build.gradle
@@ -5,6 +5,7 @@ android {
compileSdk 34
defaultConfig {
minSdk 4
+ targetSdk 34
}
buildTypes {
release {
@@ -15,10 +16,4 @@ android {
buildFeatures {
aidl true
}
- lint {
- targetSdk 34
- }
- testOptions {
- targetSdk 34
- }
}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index ed52ce90..0481b86b 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,3 +1,5 @@
+rootProject.name = "ScanBridge"
+
pluginManagement {
repositories {
google {
@@ -30,7 +32,8 @@ dependencyResolutionManagement {
}
}
-rootProject.name = "ScanBridge"
-include(":app")
+include(":shared")
+include(":androidApp")
+include(":desktopApp")
include(":lvl_library")
project(":lvl_library").projectDir = File(rootDir, "libraries/play-licensing/lvl_library/")
diff --git a/shared/.gitignore b/shared/.gitignore
new file mode 100644
index 00000000..92e0b0fb
--- /dev/null
+++ b/shared/.gitignore
@@ -0,0 +1,2 @@
+/build
+build
\ No newline at end of file
diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts
new file mode 100644
index 00000000..b7fdc16c
--- /dev/null
+++ b/shared/build.gradle.kts
@@ -0,0 +1,69 @@
+import org.jetbrains.kotlin.gradle.dsl.JvmTarget
+import org.gradle.kotlin.dsl.withType
+import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
+
+plugins {
+ alias(libs.plugins.kotlin.multiplatform)
+ alias(libs.plugins.compose.compiler)
+ alias(libs.plugins.compose.multiplatform)
+ alias(libs.plugins.android.kmp.library)
+}
+
+kotlin {
+ jvm {
+ compilerOptions { jvmTarget = JvmTarget.JVM_17 }
+ }
+
+ android {
+ namespace = "io.github.chrisimx.scanbridge"
+ compileSdk = 36
+ minSdk = 23
+
+ /*compilerOptions.configure {
+ jvmTarget.set(
+ org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
+ )
+ }*/
+ }
+
+
+ iosArm64()
+ iosSimulatorArm64()
+
+ sourceSets {
+ commonMain.dependencies {
+ api(libs.compose.runtime)
+ api(libs.compose.ui)
+ api(libs.compose.foundation)
+ api(libs.compose.resources)
+ api(libs.compose.ui.tooling.preview)
+ api(libs.compose.material3)
+ //implementation(libs.compose.ui.tooling)
+ }
+
+ commonTest.dependencies {
+ implementation(kotlin("test"))
+ implementation(libs.compose.ui.test)
+ }
+
+ androidMain.dependencies {
+ }
+
+ jvmMain.dependencies {
+ implementation(compose.desktop.currentOs)
+ }
+
+ }
+
+ targets
+ .withType()
+ .matching { it.konanTarget.family.isAppleFamily }
+ .configureEach {
+ binaries {
+ framework {
+ baseName = "SharedUI"
+ isStatic = true
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/shared/src/commonMain/composeResources/drawable/ic_cyclone.xml b/shared/src/commonMain/composeResources/drawable/ic_cyclone.xml
new file mode 100644
index 00000000..f1c45b5a
--- /dev/null
+++ b/shared/src/commonMain/composeResources/drawable/ic_cyclone.xml
@@ -0,0 +1,12 @@
+
+
+
+
\ No newline at end of file
diff --git a/shared/src/commonMain/composeResources/drawable/ic_dark_mode.xml b/shared/src/commonMain/composeResources/drawable/ic_dark_mode.xml
new file mode 100644
index 00000000..0ce2444a
--- /dev/null
+++ b/shared/src/commonMain/composeResources/drawable/ic_dark_mode.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/shared/src/commonMain/composeResources/drawable/ic_light_mode.xml b/shared/src/commonMain/composeResources/drawable/ic_light_mode.xml
new file mode 100644
index 00000000..b7331d3e
--- /dev/null
+++ b/shared/src/commonMain/composeResources/drawable/ic_light_mode.xml
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/shared/src/commonMain/composeResources/drawable/ic_rotate_right.xml b/shared/src/commonMain/composeResources/drawable/ic_rotate_right.xml
new file mode 100644
index 00000000..18106717
--- /dev/null
+++ b/shared/src/commonMain/composeResources/drawable/ic_rotate_right.xml
@@ -0,0 +1,10 @@
+
+
+
\ No newline at end of file
diff --git a/shared/src/commonMain/composeResources/font/IndieFlower-Regular.ttf b/shared/src/commonMain/composeResources/font/IndieFlower-Regular.ttf
new file mode 100644
index 00000000..3774ef55
Binary files /dev/null and b/shared/src/commonMain/composeResources/font/IndieFlower-Regular.ttf differ
diff --git a/shared/src/commonMain/composeResources/values/strings.xml b/shared/src/commonMain/composeResources/values/strings.xml
new file mode 100644
index 00000000..b8d73e48
--- /dev/null
+++ b/shared/src/commonMain/composeResources/values/strings.xml
@@ -0,0 +1,7 @@
+
+ Cyclone
+ Open github
+ Run
+ Stop
+ Theme
+
\ No newline at end of file
diff --git a/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/App.kt b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/App.kt
new file mode 100644
index 00000000..e726714f
--- /dev/null
+++ b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/App.kt
@@ -0,0 +1,104 @@
+package io.github.chrisimx.scanbridge
+
+import androidx.compose.animation.core.*
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.*
+import androidx.compose.material3.*
+import androidx.compose.runtime.*
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.rotate
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.platform.LocalUriHandler
+import androidx.compose.ui.text.font.FontFamily
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import scanbridge.sharedui.generated.resources.*
+import io.github.chrisimx.scanbridge.theme.AppTheme
+import io.github.chrisimx.scanbridge.theme.LocalThemeIsDark
+import kotlinx.coroutines.isActive
+import org.jetbrains.compose.resources.Font
+import org.jetbrains.compose.resources.stringResource
+import org.jetbrains.compose.resources.vectorResource
+
+@Preview
+@Composable
+fun App(
+ onThemeChanged: @Composable (isDark: Boolean) -> Unit = {}
+) = AppTheme(onThemeChanged) {
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .windowInsetsPadding(WindowInsets.safeDrawing)
+ .padding(16.dp),
+ horizontalAlignment = Alignment.CenterHorizontally
+ ) {
+ Text(
+ text = stringResource(Res.string.cyclone),
+ fontFamily = FontFamily(Font(Res.font.IndieFlower_Regular)),
+ style = MaterialTheme.typography.displayLarge
+ )
+
+ var isRotating by remember { mutableStateOf(false) }
+
+ val rotate = remember { Animatable(0f) }
+ val target = 360f
+ if (isRotating) {
+ LaunchedEffect(Unit) {
+ while (isActive) {
+ val remaining = (target - rotate.value) / target
+ rotate.animateTo(target, animationSpec = tween((1_000 * remaining).toInt(), easing = LinearEasing))
+ rotate.snapTo(0f)
+ }
+ }
+ }
+
+ Image(
+ modifier = Modifier
+ .size(250.dp)
+ .padding(16.dp)
+ .run { rotate(rotate.value) },
+ imageVector = vectorResource(Res.drawable.ic_cyclone),
+ colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.onSurface),
+ contentDescription = null
+ )
+
+ ElevatedButton(
+ modifier = Modifier
+ .padding(horizontal = 8.dp, vertical = 4.dp)
+ .widthIn(min = 200.dp),
+ onClick = { isRotating = !isRotating },
+ content = {
+ Icon(vectorResource(Res.drawable.ic_rotate_right), contentDescription = null)
+ Spacer(Modifier.size(ButtonDefaults.IconSpacing))
+ Text(
+ stringResource(if (isRotating) Res.string.stop else Res.string.run)
+ )
+ }
+ )
+
+ var isDark by LocalThemeIsDark.current
+ val icon = remember(isDark) {
+ if (isDark) Res.drawable.ic_light_mode
+ else Res.drawable.ic_dark_mode
+ }
+
+ ElevatedButton(
+ modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp).widthIn(min = 200.dp),
+ onClick = { isDark = !isDark },
+ content = {
+ Icon(vectorResource(icon), contentDescription = null)
+ Spacer(Modifier.size(ButtonDefaults.IconSpacing))
+ Text(stringResource(Res.string.theme))
+ }
+ )
+
+ val uriHandler = LocalUriHandler.current
+ TextButton(
+ modifier = Modifier.padding(horizontal = 8.dp, vertical = 4.dp).widthIn(min = 200.dp),
+ onClick = { uriHandler.openUri("https://github.com/terrakok") },
+ ) {
+ Text(stringResource(Res.string.open_github))
+ }
+ }
+}
diff --git a/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Color.kt b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Color.kt
new file mode 100644
index 00000000..7c5ad72b
--- /dev/null
+++ b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Color.kt
@@ -0,0 +1,80 @@
+package io.github.chrisimx.scanbridge.theme
+
+import androidx.compose.ui.graphics.Color
+
+//generated by https://materialkolor.com
+//Color palette was taken here: https://coolors.co/palette/e63946-f1faee-a8dadc-457b9d-1d3557
+
+internal val Seed = Color(0xFF1D3557)
+
+internal val PrimaryLight = Color(0xFF485F84)
+internal val OnPrimaryLight = Color(0xFFFFFFFF)
+internal val PrimaryContainerLight = Color(0xFFD5E3FF)
+internal val OnPrimaryContainerLight = Color(0xFF30476A)
+internal val SecondaryLight = Color(0xFF2B6485)
+internal val OnSecondaryLight = Color(0xFFFFFFFF)
+internal val SecondaryContainerLight = Color(0xFFC7E7FF)
+internal val OnSecondaryContainerLight = Color(0xFF064C6B)
+internal val TertiaryLight = Color(0xFF356668)
+internal val OnTertiaryLight = Color(0xFFFFFFFF)
+internal val TertiaryContainerLight = Color(0xFFB9ECEE)
+internal val OnTertiaryContainerLight = Color(0xFF1A4E50)
+internal val ErrorLight = Color(0xFFBB152C)
+internal val OnErrorLight = Color(0xFFFFFFFF)
+internal val ErrorContainerLight = Color(0xFFFFDAD8)
+internal val OnErrorContainerLight = Color(0xFF410007)
+internal val BackgroundLight = Color(0xFFF9F9F9)
+internal val OnBackgroundLight = Color(0xFF1A1C1C)
+internal val SurfaceLight = Color(0xFFF9F9F9)
+internal val OnSurfaceLight = Color(0xFF1A1C1C)
+internal val SurfaceVariantLight = Color(0xFFDCE5D9)
+internal val OnSurfaceVariantLight = Color(0xFF404941)
+internal val OutlineLight = Color(0xFF717970)
+internal val OutlineVariantLight = Color(0xFFC0C9BE)
+internal val ScrimLight = Color(0xFF000000)
+internal val InverseSurfaceLight = Color(0xFF2F3131)
+internal val InverseOnSurfaceLight = Color(0xFFF0F1F1)
+internal val InversePrimaryLight = Color(0xFFB0C7F1)
+internal val SurfaceDimLight = Color(0xFFDADADA)
+internal val SurfaceBrightLight = Color(0xFFF9F9F9)
+internal val SurfaceContainerLowestLight = Color(0xFFFFFFFF)
+internal val SurfaceContainerLowLight = Color(0xFFF3F3F4)
+internal val SurfaceContainerLight = Color(0xFFEEEEEE)
+internal val SurfaceContainerHighLight = Color(0xFFE8E8E8)
+internal val SurfaceContainerHighestLight = Color(0xFFE2E2E2)
+
+internal val PrimaryDark = Color(0xFFB0C7F1)
+internal val OnPrimaryDark = Color(0xFF183153)
+internal val PrimaryContainerDark = Color(0xFF30476A)
+internal val OnPrimaryContainerDark = Color(0xFFD5E3FF)
+internal val SecondaryDark = Color(0xFF98CDF2)
+internal val OnSecondaryDark = Color(0xFF00344C)
+internal val SecondaryContainerDark = Color(0xFF064C6B)
+internal val OnSecondaryContainerDark = Color(0xFFC7E7FF)
+internal val TertiaryDark = Color(0xFF9ECFD1)
+internal val OnTertiaryDark = Color(0xFF003739)
+internal val TertiaryContainerDark = Color(0xFF1A4E50)
+internal val OnTertiaryContainerDark = Color(0xFFB9ECEE)
+internal val ErrorDark = Color(0xFFFFB3B1)
+internal val OnErrorDark = Color(0xFF680011)
+internal val ErrorContainerDark = Color(0xFF92001C)
+internal val OnErrorContainerDark = Color(0xFFFFDAD8)
+internal val BackgroundDark = Color(0xFF121414)
+internal val OnBackgroundDark = Color(0xFFE2E2E2)
+internal val SurfaceDark = Color(0xFF121414)
+internal val OnSurfaceDark = Color(0xFFE2E2E2)
+internal val SurfaceVariantDark = Color(0xFF404941)
+internal val OnSurfaceVariantDark = Color(0xFFC0C9BE)
+internal val OutlineDark = Color(0xFF8A9389)
+internal val OutlineVariantDark = Color(0xFF404941)
+internal val ScrimDark = Color(0xFF000000)
+internal val InverseSurfaceDark = Color(0xFFE2E2E2)
+internal val InverseOnSurfaceDark = Color(0xFF2F3131)
+internal val InversePrimaryDark = Color(0xFF485F84)
+internal val SurfaceDimDark = Color(0xFF121414)
+internal val SurfaceBrightDark = Color(0xFF37393A)
+internal val SurfaceContainerLowestDark = Color(0xFF0C0F0F)
+internal val SurfaceContainerLowDark = Color(0xFF1A1C1C)
+internal val SurfaceContainerDark = Color(0xFF1E2020)
+internal val SurfaceContainerHighDark = Color(0xFF282A2B)
+internal val SurfaceContainerHighestDark = Color(0xFF333535)
diff --git a/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Theme.kt b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Theme.kt
new file mode 100644
index 00000000..9de99dc8
--- /dev/null
+++ b/shared/src/commonMain/kotlin/io/github/chrisimx/scanbridge/theme/Theme.kt
@@ -0,0 +1,105 @@
+package io.github.chrisimx.scanbridge.theme
+
+import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
+import androidx.compose.material3.darkColorScheme
+import androidx.compose.material3.lightColorScheme
+import androidx.compose.runtime.*
+
+private val LightColorScheme = lightColorScheme(
+ primary = PrimaryLight,
+ onPrimary = OnPrimaryLight,
+ primaryContainer = PrimaryContainerLight,
+ onPrimaryContainer = OnPrimaryContainerLight,
+ secondary = SecondaryLight,
+ onSecondary = OnSecondaryLight,
+ secondaryContainer = SecondaryContainerLight,
+ onSecondaryContainer = OnSecondaryContainerLight,
+ tertiary = TertiaryLight,
+ onTertiary = OnTertiaryLight,
+ tertiaryContainer = TertiaryContainerLight,
+ onTertiaryContainer = OnTertiaryContainerLight,
+ error = ErrorLight,
+ onError = OnErrorLight,
+ errorContainer = ErrorContainerLight,
+ onErrorContainer = OnErrorContainerLight,
+ background = BackgroundLight,
+ onBackground = OnBackgroundLight,
+ surface = SurfaceLight,
+ onSurface = OnSurfaceLight,
+ surfaceVariant = SurfaceVariantLight,
+ onSurfaceVariant = OnSurfaceVariantLight,
+ outline = OutlineLight,
+ outlineVariant = OutlineVariantLight,
+ scrim = ScrimLight,
+ inverseSurface = InverseSurfaceLight,
+ inverseOnSurface = InverseOnSurfaceLight,
+ inversePrimary = InversePrimaryLight,
+ surfaceDim = SurfaceDimLight,
+ surfaceBright = SurfaceBrightLight,
+ surfaceContainerLowest = SurfaceContainerLowestLight,
+ surfaceContainerLow = SurfaceContainerLowLight,
+ surfaceContainer = SurfaceContainerLight,
+ surfaceContainerHigh = SurfaceContainerHighLight,
+ surfaceContainerHighest = SurfaceContainerHighestLight,
+)
+
+private val DarkColorScheme = darkColorScheme(
+ primary = PrimaryDark,
+ onPrimary = OnPrimaryDark,
+ primaryContainer = PrimaryContainerDark,
+ onPrimaryContainer = OnPrimaryContainerDark,
+ secondary = SecondaryDark,
+ onSecondary = OnSecondaryDark,
+ secondaryContainer = SecondaryContainerDark,
+ onSecondaryContainer = OnSecondaryContainerDark,
+ tertiary = TertiaryDark,
+ onTertiary = OnTertiaryDark,
+ tertiaryContainer = TertiaryContainerDark,
+ onTertiaryContainer = OnTertiaryContainerDark,
+ error = ErrorDark,
+ onError = OnErrorDark,
+ errorContainer = ErrorContainerDark,
+ onErrorContainer = OnErrorContainerDark,
+ background = BackgroundDark,
+ onBackground = OnBackgroundDark,
+ surface = SurfaceDark,
+ onSurface = OnSurfaceDark,
+ surfaceVariant = SurfaceVariantDark,
+ onSurfaceVariant = OnSurfaceVariantDark,
+ outline = OutlineDark,
+ outlineVariant = OutlineVariantDark,
+ scrim = ScrimDark,
+ inverseSurface = InverseSurfaceDark,
+ inverseOnSurface = InverseOnSurfaceDark,
+ inversePrimary = InversePrimaryDark,
+ surfaceDim = SurfaceDimDark,
+ surfaceBright = SurfaceBrightDark,
+ surfaceContainerLowest = SurfaceContainerLowestDark,
+ surfaceContainerLow = SurfaceContainerLowDark,
+ surfaceContainer = SurfaceContainerDark,
+ surfaceContainerHigh = SurfaceContainerHighDark,
+ surfaceContainerHighest = SurfaceContainerHighestDark,
+)
+
+internal val LocalThemeIsDark = compositionLocalOf { mutableStateOf(true) }
+
+@Composable
+internal fun AppTheme(
+ onThemeChanged: @Composable (isDark: Boolean) -> Unit,
+ content: @Composable () -> Unit
+) {
+ val systemIsDark = isSystemInDarkTheme()
+ val isDarkState = remember(systemIsDark) { mutableStateOf(systemIsDark) }
+ CompositionLocalProvider(
+ LocalThemeIsDark provides isDarkState
+ ) {
+ val isDark by isDarkState
+ onThemeChanged(!isDark)
+ MaterialTheme(
+ colorScheme = if (isDark) DarkColorScheme else LightColorScheme,
+ content = { Surface(content = content) }
+ )
+ }
+}
diff --git a/shared/src/iosMain/kotlin/main.kt b/shared/src/iosMain/kotlin/main.kt
new file mode 100644
index 00000000..2d86d9b1
--- /dev/null
+++ b/shared/src/iosMain/kotlin/main.kt
@@ -0,0 +1,22 @@
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.ui.window.ComposeUIViewController
+import io.github.chrisimx.scanbridge.App
+import platform.UIKit.UIApplication
+import platform.UIKit.UIStatusBarStyleDarkContent
+import platform.UIKit.UIStatusBarStyleLightContent
+import platform.UIKit.UIViewController
+import platform.UIKit.setStatusBarStyle
+
+fun MainViewController(): UIViewController = ComposeUIViewController {
+ App(onThemeChanged = { ThemeChanged(it) })
+}
+
+@Composable
+private fun ThemeChanged(isDark: Boolean) {
+ LaunchedEffect(isDark) {
+ UIApplication.sharedApplication.setStatusBarStyle(
+ if (isDark) UIStatusBarStyleDarkContent else UIStatusBarStyleLightContent
+ )
+ }
+}