The client

Bible Daily serves Catholic worshippers who follow the daily liturgical readings — the first reading, responsorial psalm, second reading (on Sundays), Gospel acclamation, and Gospel. The client wanted an app that brought these readings onto Android in a form consistent with the liturgical calendar, with enough surrounding scripture and reflection material to be useful for both personal prayer and group study.

The challenge

Bible Daily looks simple on the surface — surface today's readings and let the user scroll. The complexity is in the calendar. The Catholic lectionary is a three-year Sunday cycle (A, B, C) and a two-year weekday cycle (I, II), overlaid with solemnities, feasts, and memorials that can displace the ordinary reading of the day. A simple "day → readings" lookup table would be wrong in edge cases several times a year. We built a lectionary engine that resolves the correct readings for any date by running through the ranking rules of the General Roman Calendar.

The second challenge was offline content. Many target users open the app during Mass or in quiet prayer and expect the readings to be available without asking the network. We ship the next seven days of readings packaged with the app and refresh them in the background via WorkManager whenever connectivity returns.

The third challenge was audio. A portion of the user base prefers to listen to the readings rather than read them. We integrated narrator audio using ExoPlayer with a foreground media service, with lock-screen controls and Bluetooth-headset support, which required a careful Play Console review for FOREGROUND_SERVICE_MEDIA_PLAYBACK permissions.

What we built

Bible Daily is a native Android app shipped under the codename "Covenant" to the Play Store. It presents the daily readings in a clean typographic layout with adjustable font size, a dark reading mode, a reflections pane the user can expand, and an audio control bar that plays a narrated version of the reading. A bookmarking layer lets users save reflections they want to return to, and a simple note-taking surface allows a user to attach a personal note to any reading.

The calendar engine runs entirely on-device. Content is pre-bundled at build time for one week and refreshed over the next twelve months lazily as the user scrolls forward or backward. Text is stored in a Room-backed content cache keyed by date and reading type, with a migration path for text revisions.

Technology stack

  • Language: Kotlin (primary).
  • Architecture: MVVM with Android Architecture Components, Hilt for DI, Coroutines + Flow for reactive streams.
  • UI: View system with Material 3, selective Compose surfaces.
  • Data: Room (local), Firestore (remote content mirror).
  • Media: ExoPlayer, foreground media playback service, MediaSession for lock-screen controls.
  • Background work: WorkManager for nightly reading-cache refresh.
  • Backend services: Firebase Auth, Firestore, Cloud Messaging, Crashlytics.

Outcome

Bible Daily is live on the Play Store with a stable user base and a 4-plus-star rating at the time of writing. The Play Store submission cleared the FOREGROUND_SERVICE_MEDIA_PLAYBACK review on first pass — a non-trivial outcome given Google's tightening stance on background services. For Anoint Tech, Bible Daily is the clearest example of how we build media-heavy Android apps: native, offline-first, and carefully scoped against Play policy.

Related

Building a faith-based Android app?

Devotional, liturgical, or scripture apps — we have shipped several and know the Play Store policy landscape. Tell us what you want to build.

Start a conversation