diff --git a/README.md b/README.md
index 8d6ac9a..3db5e92 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,10 @@
-# Document Manager
+# DocVault
-Private, encrypted document storage for Android. No cloud, no accounts, no compromises.
+Private, encrypted document vault for Android. No cloud, no accounts, no compromises.
## Why this exists
-I needed a place to keep passport scans, insurance docs, and travel papers on my phone where:
+I needed a secure place to keep passport scans, insurance docs, and travel papers on my phone where:
- They're encrypted and locked behind biometrics
- Nothing gets uploaded anywhere without me explicitly doing it
- I can find stuff fast with tags and search
@@ -76,6 +76,9 @@ Pre-built APKs are available from [GitHub Releases](https://github.com/sethusrin
No build tools required — just download and install.
+### App Name
+This app is called **DocVault** — a secure vault for your important documents.
+
## Installing on Your Android Device
@@ -105,6 +108,11 @@ For general use, download the **release** APK.
3. When prompted, tap **Open** or find it in your Downloads app
4. Tap **Install** → **Done**
+### Notes
+- **App Name:** This app is called **DocVault**
+- **Package Name:** `com.app.traveldocs`
+- When installing, you'll see it as "DocVault" on your app drawer
+
### Option B — Install via USB from your computer
Requires [Android Platform Tools](https://developer.android.com/tools/releases/platform-tools) (includes `adb`).
@@ -135,7 +143,7 @@ adb install document-manager-release.apk
### After Installing
-1. Launch **Document Manager** from your app drawer
+1. Launch **DocVault** from your app drawer
2. Read and accept the End User License Agreement
3. The app uses your device's **biometric authentication** (fingerprint/face/PIN) — no separate app password needed
4. Start importing documents via **Import** button on the home screen
@@ -143,7 +151,7 @@ adb install document-manager-release.apk
## Quick start
```bash
-# You need JDK 17 and Android SDK (API 34)
+# You need JDK 17 and Android SDK (API 36 for Play Store compliance)
# On Ubuntu/Linux, run the setup script
bash scripts/setup.sh
@@ -196,6 +204,10 @@ The domain layer has zero Android imports. Data implements domain interfaces. Pr
| Hilt | Standard Android DI. ViewModels get auto-scoped. |
| Kotest property tests | Domain invariants verified with random inputs, not just cherry-picked examples |
+## App Name: DocVault
+
+This app is called **DocVault** — a secure vault for your important documents. The name reflects its purpose as an encrypted storage location for sensitive documents.
+
## Feature flags
All experimental stuff is behind toggles in Settings → Experimental Features:
@@ -251,6 +263,34 @@ export ANDROID_HOME=$HOME/android-dev-tools/android-sdk
echo "sdk.dir=$ANDROID_HOME" > local.properties
```
+### Build & Deploy
+
+```bash
+# Build only
+./gradlew assembleDebug # debug APK
+./gradlew assembleRelease # release APK (unsigned)
+
+# Build both APK and AAB for Play Store
+./scripts/build-release.sh
+
+# One-command build + deploy (default: release)
+./scripts/deploy.sh
+
+# Or specify variant
+./scripts/deploy.sh release # production build (minified, no debug logs)
+./scripts/deploy.sh debug # development build (debug logs, diagnostics)
+```
+
+### App Signing for Play Store
+
+Before publishing to Google Play Store, you need to generate a release keystore:
+
+```bash
+./scripts/release_keystore.sh
+```
+
+This creates `~/release.keystore` used for signing release builds.
+
### Build & deploy
```bash
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 500b64e..fdc39bf 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -7,7 +7,7 @@ plugins {
android {
namespace = "com.app.traveldocs"
- compileSdk = 34
+ compileSdk = 36
defaultConfig {
applicationId = "com.app.traveldocs"
@@ -15,7 +15,7 @@ android {
ndk {
abiFilters += listOf("arm64-v8a")
}
- targetSdk = 34
+ targetSdk = 36
versionCode = 2
versionName = "1.0.1"
diff --git a/app/src/main/java/com/app/traveldocs/debug/CrashHandler.kt b/app/src/main/java/com/app/traveldocs/debug/CrashHandler.kt
index c1787a0..529dee5 100644
--- a/app/src/main/java/com/app/traveldocs/debug/CrashHandler.kt
+++ b/app/src/main/java/com/app/traveldocs/debug/CrashHandler.kt
@@ -115,7 +115,7 @@ class CrashHandler(
}
companion object {
- private const val DEVELOPER_EMAIL = "developer@documentmanager.app"
+ private const val DEVELOPER_EMAIL = "support@docvault.app"
fun install(context: Context) {
val defaultHandler = Thread.getDefaultUncaughtExceptionHandler()
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index eafdf78..2104d5e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -153,7 +153,7 @@
Privacy Policy
- https://documentmanager.app/privacy
+ https://github.com/sethusrinivasan/document-manager/blob/main/docs/PRIVACY_POLICY.md
Send Crash Report
Crash report ready to send
No crash reports available
diff --git a/docs/PRIVACY_POLICY.md b/docs/PRIVACY_POLICY.md
index 32dde4a..1db9d3b 100644
--- a/docs/PRIVACY_POLICY.md
+++ b/docs/PRIVACY_POLICY.md
@@ -58,4 +58,4 @@ We may update this policy. Changes will be noted in the app's About section.
## Contact
-For questions about this privacy policy, contact: developer@documentmanager.app
+For questions about this privacy policy, contact via: https://github.com/sethusrinivasan/document-manager/issues
diff --git a/scripts/build-release.sh b/scripts/build-release.sh
new file mode 100644
index 0000000..b2fb16f
--- /dev/null
+++ b/scripts/build-release.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+# Script to build release APK and AAB for Play Store
+
+set -e
+
+echo "========================================"
+echo " DocVault Release Build"
+echo "========================================"
+echo ""
+
+# Check for release keystore
+if [ ! -f "$HOME/release.keystore" ]; then
+ echo -e "\033[0;31mERROR: Release keystore not found!\033[0m"
+ echo "Generate it first with: ./scripts/release_keystore.sh"
+ exit 1
+fi
+
+echo "✓ Release keystore found"
+echo ""
+
+# Build release APK
+echo "Building release APK..."
+./gradlew assembleRelease
+if [ $? -eq 0 ]; then
+ echo -e "\033[0;32m✓ Release APK built successfully\033[0m"
+ echo ""
+ ls -lh app/build/outputs/apk/release/*.apk
+else
+ echo -e "\033[0;31m✗ Release APK build failed\033[0m"
+ exit 1
+fi
+
+echo ""
+
+# Build release App Bundle (for Play Store)
+echo "Building release App Bundle..."
+./gradlew bundleRelease
+if [ $? -eq 0 ]; then
+ echo -e "\033[0;32m✓ Release App Bundle built successfully\033[0m"
+ echo ""
+ ls -lh app/build/outputs/bundle/release/*.aab
+else
+ echo -e "\033[0;31m✗ Release App Bundle build failed\033[0m"
+ exit 1
+fi
+
+echo ""
+echo "========================================"
+echo " Build Complete!"
+echo "========================================"
+echo ""
+echo "APK location: app/build/outputs/apk/release/"
+echo "AAB location: app/build/outputs/bundle/release/"
+echo ""
+echo "To deploy APK:"
+echo " adb install app/build/outputs/apk/release/app-release.apk"
+echo ""
+echo "To upload to Play Store:"
+echo " Upload app/build/outputs/bundle/release/app-release.aab"
diff --git a/scripts/deploy.sh b/scripts/deploy.sh
index 3a05221..08b0720 100755
--- a/scripts/deploy.sh
+++ b/scripts/deploy.sh
@@ -20,7 +20,7 @@ if [ "$VARIANT" = "debug" ]; then
APK="$PROJECT_DIR/app/build/outputs/apk/debug/app-debug.apk"
else
"$PROJECT_DIR/gradlew" -p "$PROJECT_DIR" assembleRelease --no-daemon
- APK="$PROJECT_DIR/app/build/outputs/apk/release/app-release-unsigned.apk"
+ APK="$PROJECT_DIR/app/build/outputs/apk/release/app-release.apk"
fi
if [ ! -f "$APK" ]; then