I wanted a Bible app I use every day to open without ads, logins or a network. Existing apps fetched text from servers, and hymns, ambient sounds and reading plans were scattered across different apps. So I built an offline-first app that puts “Bible, hymns and rest in one place”.
What I built
Reader: Korean Revised, KJV, WEB and ASV built in (31,084 verses). Initial-consonant search and verse shortcuts, parallel view, four highlighter colors, 190k cross-references, sepia mode.
Hymns & rest: Lyrics with audio (background playback, lock-screen controls), rain, waves and colored noise on infinite loop with a sleep timer.
Plans & journal: Six reading plans (start date can be backdated), devotional journal, prayer list, memory cards, transcription mode with live typo marking, reading recordings.
My Church: A church space opened with one invite code: notices, shared prayer, photo album, combined reading progress, event countdowns. No accounts, no passwords.
AI devotional assistant: Devotional chat, passage commentary, Bible quizzes, and photo-to-passage lookup for paper Bibles.
Distribution: In-app updates instead of app stores. A new version is downloaded from the home card, verified by SHA-256 and size, then installed.
Decisions
One Flutter codebase for iOS, Android and tablets. Bible text and cross-references ship inside the app, so the server dependency is zero.
AI behind a Cloudflare Workers proxy. Users never enter an API key and daily quotas are enforced server-side. The church space runs on Workers + D1 (relational), KV (photos) and R2 (APK) with no server to operate.
No sign-up: the church space uses an invite code and a device token. Less to administer, less personal data to hold.
Troubleshooting
Update APKs are served from a token-protected path rather than a public link. A 403 on the admin stats page in the browser was fixed in v1.28.
After a UI string patch silently applied zero changes (the formatter had moved the code), I adopted a rule: a screen change is “done” only after grep and a screenshot confirm it.
Status
v1.28, 102 tests. In real use with a church space; next is tidying APK hosting.