Skip to content
fethiverseHire me

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.

alt · Same day, same areaNew day or new placeOpens the app1Last prayer times and place2Saved data3Home screen at once4Where are you now?5Fresh position6Keep what is on screen7Today's times for this place8Fresh times9Screen updates in place10YouTakvappSaved on the phoneLocationPrayer-time service
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.

yesnofoundnoneIts conventionInternational defaultCountry known?Your locationRegion from coordinatesToday's prayer times
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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Try it on your phone.

Download RouteRush on the App StoreTakvaApp on Google Play