A private, honest record of your worship
Ihtisab is a private, offline iOS app for muhasabah — honest daily self-accounting across the five prayers, qada make-ups, sunnah prayers, Qur'an, and morning and evening athkar. I designed and built it end-to-end. The hardest problem was not what to add. It was what to leave out.
The brief I wrote myself asked for something to motivate me. The first real design decision reversed it: the app should stay out of the way, keep my practice honestly visible, and never put a number or a badge between me and the act. Everything good about it followed from that restraint.
The Constraint That Became the Product
A tool that tracks worship carries a specific risk — it can pull attention toward being seen to worship, or toward a score standing in for the deed. So the app is single-player and private by its architecture: no account, no server, no network, no share sheet. Prayer times are computed on device from location; nothing is sent anywhere. Worship data never leaves the phone. That privacy is not a setting buried in preferences — it is the reason a serious person could trust it, and it made every later decision simpler.
The Name Is the Argument
Muhasabah — the end-of-day reckoning — was the obvious name, and it was taken. The replacement is sharper than the original. Ihtisab comes from īmānan wa-ḥtisāban, the phrase in the Ramadan hadith for acting out of faith and in anticipation of reward from Allah while holding yourself to account. It carries both halves of the app in one word — the accounting and the intention behind it — where muhasabah is only the accounting half. Two clean syllables, no awkward transliteration. The name had to do the work a tagline usually does, because the app itself never raises its voice.
A Day Logged in Three Seconds
The single highest-leverage detail: logging a prayer must take under three seconds. If it takes ten, the app gets abandoned within a month regardless of how good everything else is. Today is the default screen and ninety percent of usage — the current window is highlighted, and a prayer is one tap to a sheet, one tap to confirm, done.
A prayer is not a binary done/not-done. "Prayed Asr forty minutes late, alone" and "prayed Asr in jamaah at the masjid" are very different days, and a checkbox flattens them into the same lie. Ihtisab records a four-state model — on time, late, qada, missed — which is what makes the data honest enough to act on later: it can tell you whether your problem is missing prayers or drifting on them, two different problems with two different fixes.

Honest, Not Harsh
An honest tracker has a voice problem to solve. Honest is not the same as harsh. The distinction the whole app is tuned to: it is blunt about patterns and quiet about incidents. A single missed Asr gets no comment — the screen just shows the next window opening. Asr missed nine of the last thirty days gets named directly, with the number. The copy reads like a good analytics dashboard, not a fitness app: no emoji, no exclamation points, no praise for showing up.
| Situation | Not this | This |
|---|---|---|
| A single miss | "You missed Asr" | (silence — the next window is shown instead) |
| A pattern | "Try to do better" | "Asr is your weakest — 43% on time this month." |
| Improvement | "Great job" | "Fajr on-time went from 40% to 72% over six weeks." |
| A decline | "Your streak is broken" | "Qur'an dropped to 11 of the last 30 days, from 24." |
The score follows the same ethic. Each domain produces a value per day, averaged over a rolling thirty days — never one blended piety number, because a single score hides the exact weak spot the app exists to reveal. The daily contribution is capped: twenty pages in one sitting cannot buy back a bad week. That mechanic is the structural form of the most beloved deeds to Allah are the most consistent, even if small — consistency beats volume in the math, not just in the copy.

What I Chose Not to Build
The non-goals were decisions, not omissions. Each item below was considered and cut on principle, because each one trades the deed for a proxy of the deed.
| Not building | Why |
|---|---|
| Leaderboards, friends, sharing | Deeds are best concealed; publishing invites showing off |
| A "hasanat earned" total | Counting acts is fine; counting reward invites self-conceit |
| Points, badges, streaks-that-punish | Attaches the heart to the score instead of the act |
| A single blended piety score | Hides the weak spot the app exists to reveal |
| Cloud sync, analytics, ads | Worship data never leaves the device |
The mercy mechanics come from the same place. Punishing someone at the exact moment they slipped is when they delete the app, so Ihtisab never draws a missed prayer as an alarm: no red X, no filled cell, no guilt notification. A miss is recorded — a small rubric-red dash in the margin of the record — and the voice stays forward-looking, showing the next window opening rather than the last one closed.
The Sky-Clock Is the Only Ornament
The app is restrained almost everywhere, so it earns one honest source of delight — something that makes it a pleasure to open without dressing up the act itself. That is the brand: a sky-clock. The interface's palette moves through six phases — night, dawn, morning, midday, afternoon, dusk — and the boundaries between them are the computed prayer times themselves. The moment the ground turns ember is maghrib.
Underneath it is real craft. The palette is authored in OKLCH so chroma peaks at the horizons and night stays genuinely dark; gold is the single working color — an outline invites, a fill confirms, never a hue swap; rubric-red is the one other semantic, and it only ever means missed. The sky is drawn as a curve, not a stack of bands: the gradient is resampled along a cubic Hermite spline through authored anchors, and the home-screen widget ships a port of that same function so the phone and the widget draw the identical sky. Beauty was allowed in exactly one place, and it was built as carefully as the restraint everywhere else.


The Whole Day, One Page
On iPad the entire practice sits on a single surface — prayers, qada, sunnah, Qur'an, and athkar, visible at a glance and still logged in seconds. It is the clearest statement of the thesis: the app's job is to make the day legible to you, accurately and without distortion, and then get out of the way.
