Only Bible App
The only bible app you will ever need.
No ads, No in-app purchases, No distractions.
Optimized for reading and highlighting. Bibles which are in the public domain are supported. Verse by verse audio playback is supported for most of the languages using Azure TTS. Many languages supported Indian, European and Asian.
flutter pub run flutter_launcher_icons --file pubspec.yaml
flutter pub run flutter_native_splash:create
Testing
Update screenshots
test/screenshot_test.dart uses golden_screenshot to render the app for each device
(iPhone, iPad, Android phone, macbook) and writes the images directly into each
platform's fastlane screenshots folder:
android/fastlane/metadata/android/en-GB/images/ios/fastlane/screenshots/en-US/macos/fastlane/screenshots/en-US/
flutter test test/screenshot_test.dart --update-goldens
Setup
brew install fastlane
Environment variables
Copy .env.example to .env and fill in real values for AZURE_TTS_SUBSCRIPTION_KEY, RESEND_API_KEY and CLOUD_TRANSLATE_API_KEY.
lib/env.g.dart is generated from .env via envied and is gitignored, so it must be (re)generated after cloning and any time .env changes:
dart run build_runner build --delete-conflicting-outputs
Signing certificates and API keys
All signing certificates, provisioning profiles, keystores and API keys used by fastlane
(iOS/macOS/Android) live in the gitignored certs/ directory at the project root, e.g.
certs/AuthKey_CB6LCVYFTC.p8, certs/pyrossh_keystore.jks, certs/service_account.json.
Copy certs/key.properties.example to certs/key.properties and fill in your Android
signing details; iOS/macOS certs and provisioning profiles are fetched automatically into
certs/ by each platform's fastlane certs lane.
Release Process
- Create file fastlane/metadata/android/en-GB/changelogs/$versionCode.txt and add change details
- Screenshots are left untouched by default — regenerating and re-uploading them
on every release is slow and usually a no-op since the UI rarely changes. To
update them as part of a release, opt in with
UPDATE_SCREENSHOTS=1(or the fastlane lane optionupdate_screenshots:true). This regenerates them viaflutter test test/screenshot_test.dart --update-goldensand uploads them withoverwrite_screenshots: trueso App Store Connect's/Play Store's existing screenshots are replaced rather than skipped as duplicates. To update them without doing a full release, run the platform'sscreenshotslane directly, e.g.cd android; fastlane screenshots.
All platforms at once
make release
Builds, uploads and submits the appbundle to the Play Store, the ipa to the
App Store, and the pkg to the Mac App Store, one after another, without
touching screenshots. Equivalent to running make release-android,
make release-ios and make release-macos in sequence — use those
individually to release just one platform without the others.
Add UPDATE_SCREENSHOTS=1 to also regenerate and upload fresh screenshots as
part of the release, e.g. make release UPDATE_SCREENSHOTS=1.
Data Backup
android:allowBackup is not set, which means it defaults to true on Android — so Auto Backup is already enabled. Your app_state.json in the documents directory will be backed up to Google Drive automatically.
However, there's one thing worth noting: the
iOS is also fine — getApplicationDocumentsDirectory() is included in iCloud backups by default with no configuration needed.
So both platforms are already covered out of the box. No changes required.