Cross-platform Flutter implementation of getBible.Life, maintained at getbible/flutter. It targets Android, iOS, web, Windows, macOS, and Linux from one native Flutter codebase. Scripture comes from GetBible API v2 and reader data remains on the device. The reader does not use a WebView.
The React application at getbible/app.getbible.life and its live deployment are the product source of truth. Flutter must reproduce the same reader behavior and data contracts natively. See the web-to-Flutter parity contract.
Development status: the repository contains the native foundation, typed domain model, API client, SQLite persistence, cache verification, reader shell, search/backup/Markdown services, tests, and CI. Store publication still requires complete feature-parity verification, physical-device QA, signing identities, and store-console access. See feature parity.
| Target | Development/test command | Distribution output |
|---|---|---|
| Android | flutter run -d android |
APK or Play Store AAB |
| iOS/iPadOS | flutter run -d ios |
Xcode archive/App Store package |
| Web | flutter run -d chrome |
Static files in build/web |
| Windows | flutter run -d windows |
Windows runner bundle |
| macOS | flutter run -d macos |
macOS application bundle |
| Linux | flutter run -d linux |
Linux runner bundle |
- Flutter stable 3.44.6 or newer
- Dart 3.12.2 or newer
- Android Studio/SDK for Android builds
- macOS with Xcode for iOS builds
flutter doctor -v
flutter pub get
flutter runThe application ID and iOS bundle ID are life.getbible.mobile. No API key is required for the public GetBible API.
The fastest interactive test is the web target:
flutter pub get
flutter run -d chromeFor Android, enable developer mode/USB debugging or start an emulator, then run flutter devices followed by flutter run -d <device-id>. GitHub Actions also publishes two downloadable artifacts after a successful main build:
getBible-live-debug-apkfor installation on an Android test device.getBible-live-web, containing the compiled static web application.
Open the successful workflow run’s Artifacts section to download them. Web files must be served by an HTTP server; opening index.html directly is not supported. A permanent GitHub Pages preview can be enabled later after the repository is public and Pages is configured to deploy from GitHub Actions.
pub.dev is not an application testing service. It is Dart and Flutter’s public package registry. This application is not intended to be published there as a reusable package. Test builds belong in GitHub Actions artifacts, GitHub Pages, TestFlight, Play Console internal testing, or locally attached Flutter devices.
dart format --output=none --set-exit-if-changed .
flutter analyze
flutter test
flutter build apk --debugCI runs the same checks and uploads an unsigned debug APK plus a compiled web build. Consult testing before merging reader, storage, backup, or cache changes.
Android:
flutter build apk --release
flutter build appbundle --releaseiOS, on macOS:
flutter build ios --release --no-codesignSigning keys and provisioning profiles must never be committed. Complete instructions are in deployment and distribution.
The code is divided into domain models/contracts, data adapters, application state, services, and presentation. SQLite is accessed through Drift's executor; network responses are parsed into strongly typed immutable models. Opened chapters are cached, their SHA endpoints are checked, and usable cached Scripture remains available when verification cannot reach the network.
lib/
application/ lifecycle and reader state
core/ errors, JSON validation, starter groups
data/api/ GetBible API v2 client
data/database/ local SQLite schema and platform executors
data/repositories/ cache and persistence implementations
domain/models/ versioned data contracts
domain/repositories/abstract persistence contracts
presentation/ native Flutter reader UI
services/ backup, search, Markdown
See architecture and data contracts.
Notes, markings, preferences, cached Scripture, and reading position are stored locally. The app has no accounts, advertising, analytics, or tracking. Network traffic is limited to resources required for Scripture and daily-passage retrieval. See privacy policy draft.
All platform launchers, favicons, splash artwork, window icons, and in-app identity use the approved GetBible artwork in assets/branding/. CI validates a committed checksum manifest so generated Flutter template icons cannot silently return. The source artwork must be replaced only with explicitly approved GetBible assets.
- Agent operating guide
- Architecture
- API and cache workflow
- Data and backup compatibility
- Feature-parity ledger
- Web-to-Flutter parity contract
- Brand assets
- Testing and QA
- Deployment and distribution
- Release checklist
- Privacy policy draft
The existing repository license is retained in LICENSE. Scripture translations remain subject to the license and copyright metadata returned by GetBible API v2; the application license does not relicense translation content.