Client

One Expo (React Native) codebase for iOS, Android, and web. The web app is the public demo; native builds are internal TestFlight and APKs.

  • Cross-platform client: Built a single Expo application with Expo Router tabs for Bible, Daily, Pray, Discover, and account, targeting iOS, Android, and web from one React Native codebase.
  • Platform delivery: Web is the public demo. iOS ships through EAS Build (development, preview, and production profiles) to an internal TestFlight group, with over-the-air JS updates so a signed binary can take client changes without a full rebuild. Android is currently APK-only from the same pipeline, sideloaded internally rather than listed on Play Store.
  • Auth and sync: Guest use stays on-device. Google, Apple, or email sign-in syncs highlights, notes, chats, and the prayer library through Supabase.
  • Offline scripture: Native builds can download scripture for offline reading; the web client loads chapters from the network.

Cloud

Supabase Postgres and Auth for accounts and user data. Cloudflare Workers for the public web host.

  • Row-level security: Enabled Postgres RLS on user-owned tables so each signed-in account can only read and write its own annotations, chats, preferences, and prayer library.
  • Shared liturgy data: Calendar, Verse of the Day, and Saint of the Week are public-read. Writes are restricted to a server-side ingest path so the Expo client cannot mutate shared tables.
  • AI-safe queries: Prayer search used by Ask AI runs with the caller's privileges, so the model cannot retrieve another user's private drafts.
  • Cloudflare hosting: Deployed the Expo web export as a Cloudflare Worker at app.seraphbible.com. Native binaries are produced with EAS, not served from Cloudflare.

AI as a Tool

The model stays on the backend: chat is proxied, and daily content is curated on a schedule rather than generated at time of requestin the UI.

  • Ask AI: Routed in-app questions, with relevant context, through a Supabase Edge Function to Gemini, keeping the model API key off the device and returning answers with scripture citations.
  • Prayer-card authoring: Used model tool-calling to search the library and draft structured prayer entries, with a separate save path that validates what gets stored.
  • Daily curation: Scheduled GitHub Actions call the model to select Verse of the Day and Saint of the Week based of the liturgical readings/calander, then persist those results in Postgres for the Daily tab.

Coming Next

Parish-life tools still in design — the same constraint-and-privacy problems as the rest of the stack, applied to Mass, Adoration, and Confession.

  • Sunday Mass planner: Natural AI conversation tool for searching over existing Mass-time directories (time, rite, language, distance) suggesting the best options, with travel as the primary use case.
  • Adoration and Confession finders: The same directory-plus-constraint AI tool pattern for nearby Adoration and Confession, with optional reminders.
  • Encrypted confession notes: Examination notes sealed with a key the user holds, so they are unreadable in the database. A later AI summary step could operate only on unlocked text, on a path that does not share the general Ask AI API key or operator-readable logs.

Screens

Bible reader on Isaiah 6: book and chapter pickers, WEB:CE version switcher, and highlighted seraphim

Bible reader

Book and chapter navigation, version switcher, and type sized for phone and desktop.

Daily View with Verse of the Day, Saint of the Week, and this week's Mass

Daily

Verse of the Day, Saint of the Week, and the week's Mass readings, stored in Postgres after backend curation.

Ask AI chat citing 1 John 4 and 1 Corinthians 13, with a teaching disclaimer under the composer

Ask AI

Natural-language questions answered with cited scripture.

Pray tab showing today's Rosary mysteries, explore-prayers actions, and Litany of Humility

Pray

Guided Rosary and a prayer library the model can extend with structured cards.