03Live Flutter app
Takvapp
A calm Qur'an and prayer companion: today's prayer times, the qibla and the Mushaf, on iPhone and Android.
- Role
- Co-founder and developer
- Team
- Two people
- Platforms
- iPhone and Android, one Flutter codebase
- Status
- Live on Google Play and the App Store
In short
Takvapp keeps a Muslim's day organised around prayer. It shows the prayer times for where you are, points you to the qibla, and opens a distraction-free Mushaf you can read or listen to, with hatim tracking. Fethi co-founded it and co-built the Flutter app in a team of two; it is live on Google Play and the App Store.
Someone who prays five times a day needs three answers fast: when is the next prayer, which way is the qibla, and where did I stop reading.
Takvapp keeps those answers one tap away in a calm, dark interface. Prayer times follow the place you are in and the convention your country uses, the Qur'an reader stays free of distractions, and the app opens on the last data it had instead of a loading screen.
What it does
Prayer times where you are
The day's prayer times and sunrise for your location, a countdown to the next prayer and a month at a glance. The calculation follows the convention your country uses.
Find the qibla
A compass that turns you toward the Kaaba and shows the bearing and the distance to it.
Read the Mushaf
A distraction-free Qur'an reader on the Mushaf's own pages, which also works offline.
Listen and keep a hatim
Recitations to listen to, and hatim tracking on your own or as a group you create or join.
Daily practice
A tesbih counter for dhikr, the special days of the Islamic calendar, and a daily verse and hadith.
Co-founder and developer
Fethi co-founded Takvapp and co-built it in a team of two. He started the Flutter codebase and its BLoC architecture and built the home screen, prayer times, the qibla compass, the tesbih counter, the calendar and special days, and the app's data layer. His partner led the Qur'an audio, notifications, the widgets and the store releases.
Two small systems keep the app fast and correct wherever you open it.
Open the app, see your day at once
What happens in the first seconds after you tap the icon.
1 of 10
You open the app.
You → Takvapp: Opens the app
All 10 steps as text
What each part does
- You
- Anyone opening Takvapp.
- Takvapp
- The Flutter app.
- Saved on the phone
- What the app saved on the phone last time: prayer times, the place and the day.
- Location
- The phone's location, asked for after the screen is already up.
- Prayer-time service
- The service that calculates prayer times for a place and a day.
Prayer times the way your country counts them
Countries calculate prayer times differently, so the app picks the convention before it asks for times. Hover or tab through the parts.
What each part does
- Its convention
- That country's or region's calculation convention.
- International default
- Only when both fail: a widely used international convention.
- Country known?
- The country, read from the place name. More than thirty countries are mapped to the convention people there use, such as Turkey's, France's or Egypt's.
- Your location
- Where the phone is, with the place name it reports.
- Region from coordinates
- If the name gives nothing, the coordinates decide: the app knows the regions where a convention applies.
- Today's prayer times
- The day's prayer times, calculated the way people around you expect.
Decisions and trade-offs
One codebase for both stores
A team of two cannot keep two native apps in step, so iPhone and Android share one Flutter codebase. The iOS widgets are the native exception.
Saved data first, no loading screen
The app used to wait on a loading screen. It now opens on the last prayer times and place it saved and refreshes in the background; the qibla starts from the last known position before GPS sharpens it.
Skip requests that cannot change the answer
Prayer times change only with the day and the place, so the app reuses what it has when the date and a neighbourhood-sized area both match.
The convention people expect
A single global method would give times that differ from the local mosque. The app picks the convention by country, then by the region of your coordinates, and only then falls back to an international default.
State you can test
Each screen's state lives in a BLoC, so saved, loading and fresh data are explicit states the interface simply draws, and they can be unit tested.
Errors people can act on
When data cannot load, people see a plain message and a retry button instead of a technical error.
Results
- 2stores from one Flutter codebaseGoogle Play and the App Store
- 30+countries mapped to their own prayer-time conventionthen the region of your coordinates, then an international default
- 0loading screens at launchsaved data first, refreshed in the background
Stack
- App
- Flutter and Dart
- BLoC state management
- Device
- Location and compass sensors
- Prayer reminders
- iOS Home Screen widgets in Swift
- Content
- Mushaf pages for offline reading
- Recitation audio
- Delivery
- Google Play
- App Store