Inspiration
The idea came from an article I read about sunset timing and how it relates to the Islamic calendar, where the day begins at sunset, not at midnight. So I kept digging, And found out that for most of history, much of the world told time this way. Ancient Egypt, Greece and Rome, the Jewish tradition, the Islamic world, medieval Europe and Japan until the 1870s all divided daylight and night into twelve temporal hours each, hours that stretch in summer and shrink in winter. The fixed sixty-minute hour only took over once mechanical clocks became common.
I also found that this older clock matches our biology. The body's circadian rhythm is set mainly by light: sunrise and sunset are the signals it synchronises to, not the number on a clock. A day measured from the sun is the day our bodies already keep.
I was just starting to build apps at the time, so I went looking for one that worked this way. I found none. So I decided to build it myself. "Ghorobi" comes from غروب, the Arabic word for sunset.
What it does
Ghorobi is a day planner built on the older clock. One dial shows your day from sunset to sunset, computed from your own sunrise and sunset, with day and night arcs sized to their real length.
A temporal hour is simply a twelfth of the light (or the dark):
$$h_{day} = \frac{t_{sunset} - t_{sunrise}}{12} \qquad h_{night} = \frac{24\text{h} - (t_{sunset} - t_{sunrise})}{12}$$
So with a 14h 30m summer day, a daylight hour lasts about 72 minutes and a night hour about 48.
- Plan by the hour a task belongs to. "The third hour of daylight" stays the third hour of daylight in December and in June. The task moves with the sun.
- Prayers on the dial. The five daily prayers can be shown alongside your tasks (Optional), with a choice of calculation method and Asr madhhab. Prayer reminders are free, and will stay free.
- A living sky. The home screen's sky changes continuously through the day, and the stars come out when the sky actually darkens.
- Arabic and English, both first-class. Real right-to-left layout, Arabic typography and hour names in both languages.
- Private and offline-first. Location is used on the device only. An account is optional.
Ghorobi Pro (monthly or yearly, through RevenueCat) adds sync across devices, task notifications, sun alerts (sunrise, sunset, golden and blue hour) and custom repeats.
How we built it
- Flutter, one codebase for iOS and Android, with Bloc/Cubit for state.
- Custom painters and fragment shaders for the dial, the sky and a refractive "liquid glass" material for the bottom bar and sheets.
- Local-first storage on SQLite. Every read and write hits the device first; Supabase handles optional accounts and sync in the background.
- RevenueCat for subscriptions on both stores, with a single entitlement. A webhook keeps the backend in step, and the customer-info listener updates the app in real time.
- Local notifications only. Reminders are scheduled on the device, so they work without a server or a connection.
One rule shaped the monetisation: a lapsed subscription never strands a user's plan. Pro only gates turning a feature on. Turning it off is always free. If Pro lapses, sync pauses but nothing is deleted, and queued changes push when the user subscribes again.
Challenges we ran into
- Time itself. A task lives at "the third hour of daylight", not at 9:14. Its civil time changes every day and with every location. We removed civil time input from the forms entirely: you pick a temporal hour, and the clock time is shown read-only.
- A sky that looked wrong. The first sky palettes were invented and looked fake. We replaced them with colours sampled from real sky footage. The first star logic peaked at midnight, so dusk had no stars; now they follow the light. At one point the whole app went dark at 2:45 in the afternoon because golden hour was being treated as evening.
- Glass that read as grey panels. Getting a refractive material in Flutter took several rounds, and we dropped the dimming scrim behind sheets so the sky stays visible.
- Arabic on a circle. Text along a curved path breaks Arabic's joined letters, so dial labels had to be designed differently rather than bent around the arc.
- Location with no fallback. The app is wrong without your real sunrise and sunset, so location is mandatory and there is no placeholder city. That made the permission flow the most fragile part of onboarding, and it cost us an App Store rejection over the wording of a pre-permission button.
- Sync that needed a restart. Early on, new tasks only showed up on a second device after relaunching. That pushed us to rebuild the data layer as local-first.
Accomplishments that we're proud of
- The dial. Midnight at the top, day and night as proportional arcs: you can see how long today's light lasts at a glance.
- Worship is never paywalled. A religious observance is not an upsell.
- Arabic that was designed in from the start, not translated afterwards.
- A free tier that is complete on its own, and a Pro tier you can cancel without losing anything.
- Shipping it: a working app with subscriptions, sync and two languages.
What we learned
- Measure, don't invent. The sky only looked right once its colours came from the real one.
- Treat the network as optional. Local-first made the app faster and removed a whole class of bugs.
- Monetisation is a design decision. Deciding what must never be gated came before deciding what Pro includes.
- Store review is part of the schedule. Small wording choices can cost days.
What's next for Ghorobi
- The Android production release on Google Play.
- A bolder dial and a richer day agenda.
- Home screen widgets, so the sun's hour is visible without opening the app.
- More languages, starting with the communities that already live by this clock.
Built With
- flutter
- supabase
Log in or sign up for Devpost to join the conversation.