871a3cc174
- Add config.py with multi-source config (YAML, .env, env vars) - Add .env.example and config.yaml.example - Add settings API endpoints (GET/POST /api/v1/settings) - Add status endpoint (GET /api/v1/status) with hardware subsystem check - Add settings screen to web client (protected by API token) - Add localization strings for settings UI - Add tests for config module and new endpoints - Update README with config documentation
PaperDash Android Client
WebView-based Android app for the BOOX Go 7 Color (Gen II) running Android 13.
Project Structure
android/
├── app/
│ ├── src/main/
│ │ ├── assets/ # Bundled HTML/CSS/JS (served from file://)
│ │ │ ├── index.html
│ │ │ ├── style.css
│ │ │ └── app.js
│ │ ├── java/.../paperdash/
│ │ │ └── MainActivity.kt # WebView container
│ │ ├── res/
│ │ │ ├── layout/activity_main.xml
│ │ │ └── values/themes.xml
│ │ └── AndroidManifest.xml
│ ├── build.gradle.kts
│ └── proguard-rules.pro
├── build.gradle.kts
├── settings.gradle.kts
└── gradle.properties
Build Requirements
- Android Studio (Hedgehog or newer) with Android SDK
- Android 13 SDK (API 33) or newer
- JDK 17
Building
Option 1: Android Studio
- Open
android/in Android Studio - Sync Gradle
- Run on connected BOOX device or emulator
Option 2: Command Line
cd android
./gradlew assembleDebug
# APK at: app/build/outputs/apk/debug/app-debug.apk
Release Build
./gradlew assembleRelease
# APK at: app/build/outputs/apk/release/app-release-unsigned.apk
Installation on BOOX Go 7 Color
-
Enable Developer Options on the BOOX (tap Build Number 7 times in Settings)
-
Enable USB Debugging in Developer Options
-
Connect via USB and run:
adb install app/build/outputs/apk/debug/app-debug.apk -
Or transfer the APK via file manager and install directly
Architecture
The app is a thin WebView container:
- MainActivity loads
file:///android_asset/index.html - WebView connects to the PaperDash server via WebSocket (
ws://<pc-ip>:8921/ws) - The server pushes real-time state (media, audio, telemetry, notifications)
- System bars are hidden for full-screen E-Ink display
Key Configuration
- minSdk: 33 (Android 13) — matches BOOX Go 7 Color Gen II
- targetSdk: 34 (Android 14)
- compileSdk: 34
- Orientation: landscape (optimized for the 7" display)
- Full-screen immersive mode — hides status and navigation bars
- JavaScript enabled — required for WebSocket connection
- No smooth scrolling — prevents E-Ink refresh artifacts
Updating the Client
The HTML/CSS/JS files live in android/app/src/main/assets/. To update:
-
Edit files in
client/(source of truth) -
Copy to
android/app/src/main/assets/:cp client/index.html android/app/src/main/assets/ cp client/style.css android/app/src/main/assets/ cp client/app.js android/app/src/main/assets/ -
Rebuild the APK
Alternatively, the WebView can be configured to load from the server URL instead of local assets — see MainActivity.kt line where loadUrl is called.