Skip to content

Repository files navigation

Glow App

CI

Native iOS/Android wrapper for Glow PWA.

Built with Capacitor to wrap the existing Glow PWA in a native shell with:

  • Native passkey PRF — biometric authentication via ASAuthorization (iOS) and CredentialManager (Android), since WebAuthn is unavailable in WebViews
  • Native secure vault — wallet seed stored in iOS Keychain / Android Keystore with biometric binding enforced by the OS, not just a JS-side gate. Adding a new Face ID / Touch ID / fingerprint enrollment voids the stored seed automatically
  • Dedicated unlock screen — cancelling the biometric prompt lands on a retry/abandon flow instead of dropping the user onto onboarding, where they could accidentally create a new passkey label and orphan the stored wallet
  • Branded native shell — app icons, splash screen, launch theme, system bar colors, safe-area-aware layout, and portrait orientation lock on iOS and Android
  • Native camera for QR scanning — CAMERA / NSCameraUsageDescription wired into the existing QR scanner dialog, with image-upload fallback if the user denies the permission
  • Native share + in-app browser — log export goes through the system share sheet via @capacitor/share, and Buy Bitcoin provider URLs open in Chrome Custom Tabs / SFSafariViewController via @capacitor/browser instead of navigating the app's WebView
  • Soft keyboard and back-button polish — proper keyboard resize on both platforms, per-field enterKeyHint action buttons, form submit retracts the keyboard, and the Android hardware back button dismisses open sheets / drawers / dialogs in LIFO order before falling through to "minimise the app"
  • CI on every PR — GitHub Actions builds the web + Android on every PR and iOS (label-gated) + preview builds on release tags, with Dependabot auto-updates. Preview builds go to Firebase App Distribution for stakeholder testing
  • Push notifications (planned, Phase 5) — notifications for Lightning address payments

Architecture

glow-app/
  glow-web/                    # git submodule (breez/glow-web)
  ios/                         # Xcode project
  android/                     # Android Studio project
  plugins/
    capacitor-passkey-prf/     # Native passkey PRF bridge (ASAuthorization / CredentialManager)
    capacitor-native-vault/    # Biometric-bound Keychain / Keystore seed storage
  capacitor.config.ts          # Capacitor configuration

The web app (glow-web) is built with Vite and the output (glow-web/dist/) is loaded into native WebViews by Capacitor. Two in-house Capacitor plugins bridge to native APIs that aren't available in WebViews: capacitor-passkey-prf for passkey + PRF extension, and capacitor-native-vault for biometric-bound secure storage.

Prerequisites

  • Node.js 22+
  • For iOS: macOS with Xcode 16+ (iOS 18+ required for passkey PRF)
  • For Android: Android Studio with SDK 28+ (API 28 = Android 9)

Setup

# Clone with submodule
git clone --recursive https://github.com/breez/glow-app.git
cd glow-app

# If already cloned without --recursive:
git submodule update --init --recursive

# Install dependencies
npm install

# Build the web app
cd glow-web && npm install && npm run build && cd ..

# Sync web assets to native projects
npx cap sync

Development

The passkey PRF plugin depends on local Spark SDK builds. See DEVELOPMENT.md for full setup instructions, or:

make setup    # full first-time setup
make ios      # build for iOS
make android  # build for Android

Implementation Status

See PLAN.md for what's next and open follow-ups.

Phase Status
1. Capacitor scaffold
2. Passkey PRF plugin
3. Native secure vault
4A. App polish
4B. CI
4C. Distribution (internal)
5. Push notifications 🔜 Next
6. Public store publishing 🔜 After 5

About

No description, website, or topics provided.

Resources

Security policy

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages