Skip to main content
ShirePath Solutions

Drawing 02.2, community platform

Biblical Battle Plans

A Bible reading tracker built like a role-playing game: reading plans, streaks, XP, guilds, and a journal. A web app that works offline, with a native iOS app in testing on the same API.

VercelVercelNeonsessionbearer tokenDrizzledue readersreminders123456Web appiOS appNext.js APINeon PostgresVercel CronAPNs, Web PushVercelVercelNeonsessionbearer tokenDrizzledue readersreminders123456Web appiOS appNext.jsAPINeonPostgresVercelCronAPNs, WebPush
Fig. 1. Version two: the web app and the iOS app read the same API instead of their own copy of the rules.
Parts list for Biblical Battle Plans
No.PartWhat it does here
1Web appPlans, streaks, guilds, and the journal, with offline reading that syncs when it reconnects.
2iOS app (in build)The native SwiftUI client in TestFlight, built on Swift types generated from the web's contracts.
3Next.js APIAbout 75 route handlers over one services package; sessions for the web, bearer tokens for iOS.
4Neon PostgresReaders, plans, progress, guilds, chat, device tokens, and the error log, through Drizzle.
5Vercel CronHourly reading reminders, a nightly streak warning, and nightly cleanup of expired phone tokens.
6APNs, Web PushDelivers the reminders to phones and browsers.

Why it exists

I read a physical Bible, and I wanted to keep a reading streak without moving my reading into an app. The role-playing game is just a fun way to track it. Nothing like it existed, so I built it.

What went wrong, and what it taught me

It hit its limits around a hundred users: no test environment, and the rules of the game buried in database queries. I rebuilt it as version two, with the rules in one shared package that every part of the app calls, covered by tests, and with every error logged, flagged in Slack, and summarized for me by Claude when I ask.

That rebuild is paying off twice. The native iOS app calls the same server the web app does, with its Swift types generated from the web's TypeScript definitions, and the build fails if the two drift apart. The TestFlight build has nearly everything the web does: reading check-offs, side quests, the church calendar, guilds with chat, leaderboards, and invites, the journal, achievements, the web's animated tier sprites, and reminder settings. Phones stay signed in with a key that is replaced each time it is used and cancelled when the password changes. Reminders go out on an hourly and a nightly schedule, by web push and by Apple push.

What it does

  • Reading plans with daily progress, and daily disciplines
  • Streaks with shields, XP, levels, and achievements
  • Guilds with leaderboards, chat, and prayer requests
  • Offline reading that syncs when it is back online
  • Reminders by web push and Apple push
  • A native iOS app in TestFlight on the same API

Screenshots

Plate 1. Biblical Battle Plans, as it looks live.

Something like this on your list? Tell us about it.

Talk about a build like this