pediatric-ai-scribe-v3/mobile
Daniel 7d55e64ca1 Add Capacitor native mobile app (PedScribe) for iOS + Android
New mobile/ directory with Capacitor project:
- Configurable server URL launcher (default: app.pedshub.com)
- Android: foreground service + wake lock for background recording
  (AudioRecordingService preserved from existing TWA)
- iOS: background audio mode + microphone permission
- App ID: com.pedshub.scribe
- Both platforms initialized and synced

Existing android/ TWA project untouched — this is a separate project.
Build: cd mobile && npx cap open android (or ios)
2026-04-11 02:18:06 +02:00
..
android Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00
ios Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00
node_modules Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00
src Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00
capacitor.config.json Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00
package-lock.json Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00
package.json Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00
README.md Add Capacitor native mobile app (PedScribe) for iOS + Android 2026-04-11 02:18:06 +02:00

PedScribe Mobile App

Native mobile wrapper for Pediatric AI Scribe using Capacitor. Provides background audio recording that survives screen lock on both iOS and Android.

Features

  • Background recording (screen lock safe)
  • Configurable server URL (supports self-hosted instances)
  • Android foreground service with wake lock for reliable recording
  • iOS background audio mode
  • App Store and Play Store ready

Prerequisites

  • Node.js 18+
  • Android Studio (for Android builds)
  • Xcode 15+ (for iOS builds, macOS only)
  • Apple Developer account ($99/yr for App Store)
  • Google Play Developer account ($25 one-time)

Setup

cd mobile
npm install
npx cap sync

Build Android

# Open in Android Studio
npx cap open android

# Or build APK directly
cd android && ./gradlew assembleRelease

The APK will be at android/app/build/outputs/apk/release/app-release.apk

Build iOS

# Open in Xcode (macOS only)
npx cap open ios

# Build and sign in Xcode
# Product > Archive > Distribute

How It Works

  1. App launches with a local launcher page
  2. User enters their PedScribe server URL (default: app.pedshub.com)
  3. URL is saved to localStorage for future launches
  4. App navigates to the remote web app
  5. Web app runs inside the native WebView with full native API access

Background Recording

Android: Uses AudioRecordingService — a foreground service that acquires a wake lock and shows a persistent notification during recording. The CPU stays active even when the screen is off.

iOS: Uses UIBackgroundModes: audio in Info.plist, which allows the WKWebView to continue audio capture when the app is backgrounded.

App Structure

mobile/
  capacitor.config.json    # Capacitor configuration
  package.json             # Dependencies
  src/
    index.html             # Launcher page (server URL config)
    launcher.js            # Auto-redirect logic
    launcher.css            # Launcher styles
  android/                 # Android native project
    app/src/main/
      java/com/pedshub/scribe/
        MainActivity.java
        AudioRecordingService.java
      AndroidManifest.xml
  ios/                     # iOS native project
    App/App/
      Info.plist           # Background audio + microphone permission

Changing the Default Server

Edit src/launcher.js and change the DEFAULT_URL variable:

var DEFAULT_URL = 'https://your-server.example.com';

Users can also change the server URL at any time from the launcher screen.