Skip to content

Projects

iOS app · Swift · SwiftUI · SQLite · Supabase

Qiyam

A Quran revision app that schedules every verse separately, instead of cutting memorised text into equal portions.

Period
November 2025 — present
Context
Personal project
250+
Downloads
50+
Countries
5.0
App Store rating
3
Months
Quiz
Dashboard
Mastery management

The problem

The usual method cuts memorised text into equal portions and revises one a day. A verse learnt ten years ago therefore gets as much time as a verse learnt last week. I wanted revision time to follow how fragile each verse actually is.

What I built

  • Every verse has its own revision due date, computed by spaced repetition from the score the user gives themselves. A solid verse moves away, a shaky one comes back quickly.
  • A second mechanism decides how to group due verses into coherent sessions: blocks of a readable length that never cross a surah boundary. Separating the two makes it possible to tune the daily load without touching the learning rhythm.
  • The schedule is smoothed at scoring time, then frozen. The ideal due date is stored separately and does not move. Without that, a schedule recomputed every day keeps shifting the same verses around and feels like a treadmill.
  • The app works offline first. All 6,236 verses ship inside the app and the local database is the source of truth. Syncing came later, as a backup — never as a condition for starting.
  • Native iOS rather than a cross-platform solution. The content is Arabic text: dedicated typeface, right-to-left reading, diacritics. I preferred to control the typography directly.

The App Store rejection

My first submission was rejected in December 2025. It was my first app, and I had aimed for an initial version with subscriptions and cloud sync while not even knowing App Store Connect existed. Things were missing from the code, and the subscription setup did not comply.

I cut. The published version is entirely free and entirely local. Development got simpler at once and the app went through. Subscriptions came back later, built on Apple's own components rather than a third-party service — those are exactly the points where review trips you up.

The site and the blog

qiyamapp.com goes with the app: the method explained, legal pages, and a blog kept in version-controlled files rather than a content management system. Publishing therefore means a commit, which costs a little on every article but removes any database and any back office. Social images are generated from fixed templates where only the text changes.

What I would do differently

  • Settle the business model before writing a single line of payment code. Three subscription architectures in eight months: the third is the right one, the first two cost entire cycles of integration and submission.
  • The algorithms are covered by a test bench that ages fictional users over several simulated months and checks that nothing drifts. But nothing runs those tests automatically: it depends on my own discipline. That is the weak link of the project.