Consumer web app
Live projectFirst version in about one monthMincha Time
Mincha Time reminds people when the afternoon prayer window is open where they are. The window moves with sunset, so it is different every day and different in every city, and a reminder that arrives at the wrong minute is worse than no reminder at all. The first version was built in about one month.
Most of the work is behind the screens. A function runs once a minute and checks whether a Firestore document exists for the current time — the documents are keyed hour_minute, so 13_47 is a document, not a queued job. There is no task queue and no per-user cron entry. Users are grouped by rounded latitude and longitude, so the Hebcal zmanim API is called once per location per day instead of once per person, and each run writes tomorrow's bucket for that location before it finishes. The system walks itself forward one day at a time.
The rest is the unglamorous detail that decides whether people keep the app installed: notification copy in six languages, two independent opt-outs that are both checked before every send (a permanent disable and a same-day snooze), and a cleanup job that removes users who have been inactive for 30 days.
Built with: Firebase Cloud Functions, Firestore, Firebase Cloud Messaging, Hebcal zmanim API