feat: initial project scaffold — server, client, Android APK

- FastAPI server with audio mixer (Windows + Voicemeeter), media tracking,
  notifications (progress + alerts), telemetry, and system tray .exe build
- Test suite covering notifications, audio mixer, media, telemetry, and API
- E-Ink web client (vanilla JS, DOM API, block meters, swipe gestures)
- Android WebView APK for BOOX Go 7 Color Gen II (Android 13, Kotlin)
- Design decision records in .pi/docs/design/
- PyInstaller build script for server .exe
This commit is contained in:
Imrayya
2026-07-01 11:19:32 +00:00
commit 0b4f739d12
36 changed files with 3916 additions and 0 deletions
+103
View File
@@ -0,0 +1,103 @@
# 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
1. Open `android/` in Android Studio
2. Sync Gradle
3. Run on connected BOOX device or emulator
### Option 2: Command Line
```bash
cd android
./gradlew assembleDebug
# APK at: app/build/outputs/apk/debug/app-debug.apk
```
### Release Build
```bash
./gradlew assembleRelease
# APK at: app/build/outputs/apk/release/app-release-unsigned.apk
```
## Installation on BOOX Go 7 Color
1. Enable **Developer Options** on the BOOX (tap Build Number 7 times in Settings)
2. Enable **USB Debugging** in Developer Options
3. Connect via USB and run:
```bash
adb install app/build/outputs/apk/debug/app-debug.apk
```
4. Or transfer the APK via file manager and install directly
## Architecture
The app is a thin WebView container:
1. **MainActivity** loads `file:///android_asset/index.html`
2. **WebView** connects to the PaperDash server via WebSocket (`ws://<pc-ip>:8921/ws`)
3. The server pushes real-time state (media, audio, telemetry, notifications)
4. 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:
1. Edit files in `client/` (source of truth)
2. Copy to `android/app/src/main/assets/`:
```bash
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/
```
3. 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.