How a simple widget grew into something I never expected
When I first built Hijri Today, I had one goal: I wanted to glance at my home screen and know today's Hijri date without opening any app. That's it. No fancy backend, no accounts, no subscriptions. Just a clean little widget that tells me where I am in the Islamic calendar.
I released v1.0.0, shared it quietly, and thought โ okay, done.
Then the feedback started coming in.
"Your app says it's Ramadan, but we haven't started yet."
That message stopped me cold.
A user from a different country was telling me that my app showed 1 Ramadan โ but their local religious authority hadn't announced the start of Ramadan yet. From where I sat in Indonesia, the date looked perfectly correct. But for them, it was off by a full day.
This is the reality of the Hijri calendar that I, as a developer, had quietly overlooked. Unlike the Gregorian calendar which is purely astronomical and universal, the Hijri calendar is tied to moon sighting โ and moon sighting is local. Saudi Arabia, Indonesia, Malaysia, and Nigeria can all legitimately observe different dates for the same Islamic month. Not because anyone is wrong. Because the tradition itself varies.
My app used Umm Al-Qura โ a well-respected calculated standard โ but no single calculation can represent every community on earth.
So I had to build something that respected that reality.
The Hijri Date Offset โ Small Feature, Big Meaning
The solution I landed on is simple on the surface: a ยฑ1 or ยฑ2 day adjustment that users can set in the app settings.
But what I really needed to get right was how it works under the hood. The temptation was to just add a number to the displayed date. But that would break everything โ events like Eid al-Fitr, Arafah, Ashura, and Ayyamul Bidh are all calculated from the Hijri date. If I only shifted the display, a user with +1 offset would still see Eid banner on the wrong day.
The correct approach: shift the input Gregorian date before conversion, not the output.
LocalDate.now() + offset days
โ
getHijriFromGregorian() โ untouched core function
โ
Adjusted Hijri date โ used for display AND all event logic
One line change. Everything downstream โ event detection, fasting reminders, month names โ just works correctly. No special cases, no per-month logic. The Umm Al-Qura table handles month rollovers naturally.
So now, a user in Malaysia who sets +1 will see the right Eid date, the right Arafah reminder, the right Ayyamul Bidh days. All of it. Automatically.
13 Languages, 1.8 Billion People
After solving the offset problem, I looked at my language list: English, Indonesian, Arabic. Three languages, maybe 300โ400 million people covered at best.
But the Muslim Ummah is vast. Nigeria alone has over 90 million Muslims. Pakistan, Bangladesh, India, Turkey, Somalia โ these are communities with hundreds of millions of believers who deserve an app that speaks their language.
So in v1.0.3, I expanded to 13 languages:
๐ฌ๐ง English ยท ๐ธ๐ฆ Arabic ยท ๐ฎ๐ฉ Indonesian ยท ๐ฒ๐พ Malay ยท ๐ต๐ฐ Urdu ยท ๐ง๐ฉ Bengali ยท ๐ฎ๐ณ Hindi ยท ๐น๐ท Turkish ยท ๐ณ๐ฌ Hausa ยท ๐ณ๐ฌ Yoruba ยท ๐ธ๐ด Somali ยท ๐ French ยท ๐ Spanish
French for West Africa. Spanish for Muslim communities in the US and Latin America. Hausa and Yoruba for Nigeria. Somali for the Horn of Africa.
What surprised me most during this process was how much the shape of a language affects layout. Urdu and Arabic are right-to-left. Bengali has its own script. Each language forced me to think more carefully about how the widget renders text โ not just translate words, but present them with dignity.
Dynamic Color โ The Widget Finally Feels Like Your Phone
This one is more personal.
Android's Material You system has been around for a while, but I hadn't implemented it in v1.0.0. The widget had a fixed theme. It looked fine โ but it looked the same on everyone's phone.
With dynamic color in v1.0.3, the widget now adapts to your wallpaper's color palette. If your wallpaper is deep blue, the widget breathes blue. Warm amber wallpaper? The widget follows. It becomes part of your home screen, not a foreign element sitting on top of it.
It's a small visual change that makes the experience feel much more personal โ which felt right for an app about something as intimate as daily Islamic practice.
1,300 Downloads. I Didn't Expect That.
I want to pause here for a moment.
From v1.0.0 to today, Hijri Today has been downloaded over 1,300 times.
No marketing. No paid ads. No viral post. Just a widget, shared quietly, spreading through the Ummah by word of mouth โ or maybe dua. I genuinely don't know how most of you found it, and that makes it even more meaningful.
1,300 people decided this little widget deserved a spot on their home screen. 1,300 people who now see the Hijri date every time they pick up their phone. That number is small by app store standards, but for a solo developer building something for the love of it โ it's everything.
It's also what pushed me to take v1.0.3 seriously. Those 1,300 people deserve better language support. They deserve a date offset when their moon sighting differs. They deserve a widget that matches their wallpaper. They earned this update, honestly.
What Building This Taught Me
I started this project thinking about my needs. One developer, one country, one moon sighting authority.
But somewhere between the first user message and this update, I realized this app is not really about me. It's about a person in Karachi who wants to know if today is Ashura. A grandmother in Kano who checks her widget for Ayyamul Bidh. A student in Paris who just wants to know what Hijri month it is without Googling it.
The offset feature taught me that correctness is contextual. The language expansion taught me that inclusion takes deliberate effort. And the dynamic color work reminded me that beauty matters โ that an app people open every day deserves to feel like it belongs in their life.
What's Next
Hijri Today remains completely free, no ads, no analytics, no tracking. Everything runs offline, on your device.
If you've been using it โ thank you. If you haven't tried it yet, give it a place on your home screen. And if your region observes a different date than what the app shows, now you can fix that yourself.
Download Hijri Today on Google Play โ
Barakallahu fiikum ๐คฒ
โ Cahyanudien Aziz, FlagoDNA
Tags: Android ยท Islamic App ยท Open Source ยท Kotlin ยท Hijri Calendar ยท Muslim ยท Mobile Development
Top comments (0)