Prava

An iOS prayer and scripture app, designed, built, and shipped alone, from first commit to the App Store.

Role
Sole engineer and designer
Stack
  • TypeScript
  • Next.js
  • Capacitor
  • Postgres
  • Prisma
  • Anthropic API
Verify
App Store · joinprava.com
The week is the spine. No streak anywhere.
One verse, slowly. Prayer in your own words.
The daily journal. Yes and no, nothing pre-filled.
A few people keeping the same week.

The problem

Faith apps borrow the wrong mechanics.

Most of them are habit trackers in vestments: streaks, scores, completion rings, and the quiet guilt of a missed day. Those mechanics reward showing up and punish honesty. The moment a practice becomes a scoreboard, people perform for the app instead of telling it the truth.

What I wanted already existed, and had for two thousand years: the Church's week, its lectionary, its prayers, its creeds. Prava puts that at the center across twelve traditions, in each tradition's own words.

The founding rule is record, not score. That sounds like a slogan. It turned out to be an engineering constraint that shaped the schema, the prompts, and what the app refuses to measure.

What was built

A full consumer product, run by one person.

A native-feeling iOS app with a daily journal, prayer and scripture surfaces, a weekly lectionary, and a People tab for praying for others by name. The AI teaches and reflects. It never touches the Church's fixed texts: creeds and historic prayers render exactly as written, enforced by CI scanners rather than good intentions. Outside the code, a team of UGC creators I recruit and manage, each with tracked links into the app.

Platform
Next.js and TypeScript inside Capacitor / WKWebView as a native iOS app
AI
Eleven grounded surfaces, each reading versioned system prompts with snapshot-tested fallbacks (thirteen at launch)
Data
Postgres with Prisma, additive-only migrations
Revenue
Freemium subscriptions, monthly and annual
Growth
A creator program of UGC creators, recruited and managed directly, with per-creator links tracked in the analytics dashboard
Infra
Object storage, error monitoring, product analytics with feature flags

Three decisions

Decisions I would defend in any interview.

AI cost in three waves

Waste first: redundant calls and oversized context. Then routing the surfaces where quality held to a smaller model. Then prompt caching, with every call's token counts (input, output, cache written, cache read) written to a usage table in Postgres so the savings could be checked against the provider's bill rather than taken on faith.

Philosophy as a schema constraint

The database stores what happened, never a grade. Unlimited grace is automatic, so a missed day is recorded honestly and never becomes a punishment mechanic. Deciding what the database refuses to know was the most interesting design problem in the product.

The process is the second engineer

Additive-only migrations so nothing is ever un-shippable. Snapshot-tested prompt fallbacks so an AI regression fails a test instead of a user. Features dark-shipped behind flags with written flip runbooks, so turning something on is a decision, not an event. And since late 2025, AI coding agents working under direction: a read-only discovery before any change, rulings written down and numbered, builds scoped small and checked on a device, and a chain of structural checks that pins what the agents produce rather than trusting it.

The back office

Twelve internal tools nobody sees.

Twelve tools on one hub, over 140 admin routes. The Prompt Lab versions the system prompts, voice fragments, and theology groundings behind the eleven governed surfaces, and shows history, diffs, and a flag when the live version has diverged from the shipped fallback. The lectionary authoring tool turns a citation typed the way a missal prints it into readings the app can serve, with a horizon that shows what is ready for the weeks ahead. The Profile Simulator inside the commitment library builds a user from life contexts and runs the selection algorithm, scores included, so tuning the matcher takes an afternoon instead of a release cycle.

Four of the twelve have pages of their own: the Prompt Lab, the analytics dashboard, the lectionary authoring tool, and the commitment library.

The hub: twelve tools, one stack.
Prompt Lab: versioned prompts, diffed and drift-checked.
Profile Simulator: the matching algorithm, testable in an afternoon.

Outcome

Live, used across a dozen denominations, paying for itself.

On the App Store since Easter 2026, with paying subscribers on monthly and annual plans.