Şafak — Quran Reading Tracker
An offline-first Android app for tracking Quran reading.
Role
A solo project. I did the data model, the reading and streak logic with its tests, the design, and the Android release build.
Stack

An Android APK. Since it isn't from the Play Store, Android will ask you to allow installing from an unknown source before it installs.
Overview
An offline-first Android app for tracking Quran reading. You read from a physical Quran; the app has no Quran text in it, it only records what you read and keeps count. There are two separate tracks, one for the Arabic and one for the translation, each with its own surah grid and streak. As a track fills up, the background of its screen slowly shifts from night to dawn; Şafak means daybreak. It also has badges, a journal you write yourself, and a PDF of that journal when you finish a track.
What it does
- ITwo separate tracks, Arabic and translation, each a swipeable home screen with its own surah grid
- IIA background sunrise on each track that rises as you cover more of its 604 pages
- IIIA daily streak (Istikrar) and a rest day you have to earn (Istiraha), plus two evening reminders
- IVA journal you write yourself after a reading, saved and exportable as a PDF
- VBadges, a Ramadan goal mode, a home-screen widget, and English and Turkish support
Screens









Technical notes
- IThe app makes no network calls. A script pulls the 604-page mushaf's ayah-to-page map at build time, and everything after that runs on the device.
- IIThe reading log is the only source of truth. Streaks, coverage, page counts, and badges are all recomputed from it by plain functions, each covered by unit tests.
- IIIThe sunrise is drawn with SVG and animated gradients, based on how many pages a track has covered. The PDF is generated on the device from HTML and CSS with expo-print.
What I learned
Most of the work was in small things you don't see on a feature list: how fast the sunrise moves, or how a reminder is worded so it doesn't nag. Getting those right mattered more than adding features.