Farhan Shaikh

Ihtisab · Design & build · 2026 · iOS · Offline

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.

Today — the current window, logged in one tap
Ihtisab Today screen — the sky-clock header over the current prayer window, the day's log, and the fasting and salah grids

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.

SituationNot thisThis
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.

Insights — the weakest prayer, named, with the number
Ihtisab Insights screen — per-prayer on-time heatmap, the weakest prayer named, qada restored, and Qur'an coverage

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 buildingWhy
Leaderboards, friends, sharingDeeds are best concealed; publishing invites showing off
A "hasanat earned" totalCounting acts is fine; counting reward invites self-conceit
Points, badges, streaks-that-punishAttaches the heart to the score instead of the act
A single blended piety scoreHides the weak spot the app exists to reveal
Cloud sync, analytics, adsWorship 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.

Qur'an — every juz, by the quarter
Ihtisab Qur'an screen — all thirty juz as rings, each filled by quarter as it is read
Athkar — in order, your place kept
Ihtisab morning athkar — the daily remembrance in order, place saved as you go

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.

iPad — the whole day on a single page
Ihtisab on iPad — the full day on one page, with the sky-clock header, the salah grid, qada, sunnah, Qur'an, and athkar