# PedScribe Mobile App Capacitor mobile wrapper for the hosted Ped-AI web app. The app defaults to `https://app.pedshub.com`, lets users choose a self-hosted server URL, and keeps clinical workflows API-backed through the same Express service as the browser app. ## Features - Hosted web workflow inside a native WebView; server updates reach mobile clients without app-store releases - Configurable server URL (supports self-hosted instances) - Haptic feedback on recording start/stop - Keep screen awake during recording - Deep linking (pedscribe:// and https://app.pedshub.com) - Share intent (receive text/PDFs from other apps) - Push notification support - **Biometric sign-in** (Face ID / Touch ID / fingerprint) — credentials stored in iOS Keychain / Android Keystore, gated by OS biometric. Enrolled on first password sign-in (opt-in prompt). 2FA still applies on top — biometric replaces the password step only. - Android and iOS project scaffolds for store builds ## Prerequisites - Node.js 18+ - Android Studio (for Android builds): `sudo snap install android-studio --classic` - Xcode 15+ (for iOS builds, macOS only) - Apple Developer account ($99/yr for App Store) - Google Play Developer account ($25 one-time) ## Setup ```bash cd mobile npm install npx cap sync ``` ## Build Android ```bash # Open in Android Studio npx cap open android # Build menu: Build > Generate Signed Bundle / APK > APK # Sign with your keystore (create one on first build) # APK output: android/app/build/outputs/apk/release/ # Or build from command line: cd android && ./gradlew assembleRelease ``` ## Build iOS (macOS only) ```bash # Open in Xcode npx cap open ios # In Xcode: # 1. Select your team/signing certificate # 2. Product > Archive # 3. Distribute App > App Store Connect ``` ## How It Works 1. App launches with a local launcher page 2. First launch: user enters their PedScribe server URL (default: app.pedshub.com) 3. URL is saved locally for future launches 4. App navigates to the remote web app inside a native WebView 5. Native plugins provide background recording, haptics, and push notifications ### Background Recording **Android:** `AudioRecordingService` is a foreground service that: - Acquires a partial wake lock (CPU stays active, screen can sleep) - Shows a persistent notification ("Recording in progress...") - Includes a "Stop Recording" quick action in the notification - Maximum 1-hour wake lock duration **iOS:** Uses `UIBackgroundModes: audio` in Info.plist, which tells iOS to keep the app alive for audio capture when backgrounded or screen-locked. ### Deep Linking - `pedscribe://` custom URL scheme opens the app directly - `https://app.pedshub.com` links open in the app instead of the browser (Android App Links) ### Share Intent (Android) Other apps can share text or PDFs directly into PedScribe: - Share a lab result from your email into the Chart Review tab - Share a referral note into the Hospital Course tab ## Capacitor Plugins Included | Plugin | Purpose | |--------|---------| | @capacitor/app | App lifecycle management | | @capacitor/haptics | Vibration feedback on recording start/stop | | @capacitor/keyboard | Keyboard management for WebView | | @capacitor/push-notifications | Push notification support | | @capacitor/screen-orientation | Screen orientation control | | @capacitor/share | Native share dialog | | @capacitor/splash-screen | Launch splash screen | | @capacitor/status-bar | Status bar styling | ## App Structure ``` mobile/ capacitor.config.json # Capacitor configuration package.json # Dependencies src/ index.html # Launcher page (server URL config) launcher.js # Auto-redirect + native feature init launcher.css # Launcher styles android/ # Android native project app/src/main/ java/com/pedshub/scribe/ MainActivity.java AudioRecordingService.java AndroidManifest.xml # Permissions, deep links, share intent ios/ # iOS native project App/App/ Info.plist # Background audio, microphone, deep links ``` ## Updating the Web App The mobile app wraps the remote web app — updating the server automatically updates all mobile clients. No app store update needed for web changes. To update native features (plugins, permissions, splash screen): ```bash cd mobile npm install npx cap sync # Then rebuild in Android Studio / Xcode ``` ## Generating App Icons Replace the default Capacitor icons with PedScribe branding: 1. Create a 1024x1024 PNG icon 2. Install the assets tool: `npm install -D @capacitor/assets` 3. Place your icon as `assets/icon-only.png` and `assets/splash.png` 4. Run: `npx capacitor-assets generate` This generates all required sizes for both platforms. ## App Store Listing Suggestions **Title:** PedScribe - Pediatric AI Scribe **Subtitle:** Voice-to-Note Clinical Documentation **Category:** Medical **Keywords:** pediatric, scribe, medical, documentation, HPI, SOAP, clinical, AI, voice **Description:** PedScribe is an AI-powered clinical documentation tool for pediatric physicians. Record patient encounters, and the AI generates structured medical notes — HPIs, SOAP notes, hospital courses, chart reviews, and more. Includes pediatric calculators, developmental milestone tracking, and a learning hub with quizzes. Self-hosted for maximum privacy with HIPAA-compliant AI providers.