Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

500 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PrayCalc

Accurate prayer times for Muslims, every device, every method, free forever.

License: MIT Build Version

Live: praycalc.com | Docs: praycalc.org

Billing status (2026-07): Stripe is not yet provisioned for this account. /upgrade shows a "launching soon" state instead of checkout — no live charges. Accounts, sign-in, and the free calculator work today on every surface. See Changelog.

Engineering Charter — Required Reading

Before contributing, read .github/wiki/ENGINEERING-CHARTER.md. It is the single source of truth for code standards across every Ummeco repo. The most-read sections:

What is this

PrayCalc is a free, GPS-accurate Islamic prayer time calculator for web, mobile, desktop, and TV. Its flagship method is DPC (Dynamic Prayer Calculation), alongside fixed presets (MWL, ISNA, Egypt, Umm al-Qura, Karachi, UOIF) and Custom — Tehran and Jafari are intentionally excluded (D-P3-19). It also supports Qibla direction, adhan reminders, and offline mode, and powers prayer times across the Ummat app ecosystem.

Features

  • DPC (Dynamic Prayer Calculation, default) plus fixed presets — MWL, ISNA, Egypt, Umm al-Qura, Karachi, UOIF — and Custom (Tehran/Jafari intentionally excluded, D-P3-19)
  • GPS-based location with city search
  • Qibla compass direction
  • Adhan audio notifications (web: Mishari, Makkah; mobile: Makkah, Mishari, Madina)
  • Monthly/yearly prayer calendars with PDF export
  • PWA with full offline support (service worker + IndexedDB caching, installable to home screen)
  • Web: 12 languages (EN, AR, UR, FA, ID, TR, MS, BN, FR, ES, DE, RU) with RTL for Arabic/Urdu. Mobile: 21 languages.
  • Countdown to next prayer
  • Dark mode (WCAG 2.2 AA, system-preference-aware)
  • Accessible (WCAG 2.2 AA — axe audited, Playwright viewport matrix)
  • Ummat account sign-in on web, mobile, and desktop — one login across the ecosystem
  • Ummat+ ($9.99/yr): unlocks the TV app and Smart Home integrations (Google Home, Alexa)
  • Desktop menu bar / tray app for macOS, Windows, Linux with live countdown and seamless auto-update

Tech Stack

Layer Tech
Web Astro, TypeScript, Tailwind CSS
Mobile (Active) React Native + Expo SDK 53 (iOS + Android) + react-native-tvos (TV platforms)
Mobile (Archive) Flutter 1.2.3 — archived branch (D-P2-PRAYCALC-RN)
Desktop Tauri 2 + Vite + React 19 (macOS, Windows, Linux)
Backend platform nSelf (100% — self-hosted PaaS on Hetzner)
API Hasura GraphQL Engine (all data access via GraphQL, no direct SQL)
Auth Hasura Auth — shared SSO at auth.ummat.dev
Docs site Astro + MDX
i18n Astro built-in i18n routing (12 locales)
PWA Serwist (service worker, offline caching)
Testing Vitest (unit), Playwright (E2E, 3-viewport matrix)
Deploy Vercel (projects: ummat-praycalc, ummat-praycalc-org)

Project Structure

praycalc/
├── web/        praycalc.com — Astro web app
├── org/        praycalc.org — documentation site
├── desktop/    menu bar / tray app — Tauri 2 + Vite + React 19 (macOS, Windows, Linux)
├── mobile/     iOS + Android phone/tablet — React Native + Expo SDK 53
├── tv/         Apple TV + Android TV + Fire TV — react-native-tvos
├── watchos/    watchOS companion — Swift + SwiftUI (scaffold)
├── wearos/     Wear OS companion — Kotlin + Jetpack Compose (scaffold)
├── smart/      Smart Home backend (Google Home + Alexa fulfillment)
└── flutter/    ARCHIVED reference only — do not add features here (see Tech Stack)

Quick Start

Start the shared Ummat backend first:

cd ~/Sites/ummeco/ummat/backend && nself start

Web app:

cd web
cp .env.example .env.local   # fill in local Hasura + auth URLs
pnpm install
pnpm dev        # https://www.praycalc.local.nself.org:8543

Docs site:

cd org
pnpm install
pnpm dev        # http://localhost:3003

Desktop app:

cd desktop
pnpm install
pnpm tauri dev

Mobile app:

cd mobile
pnpm install
pnpm start

TV app:

cd tv
pnpm install
pnpm start

flutter/ is an archived reference only (superseded by mobile/ + tv/ per D-P2-PRAYCALC-RN) — do not run or extend it.

Desktop Downloads

Current version: v1.2.4. Latest release: ummeco/praycalc releases (filter to desktop-v* tags — the repo also cuts mobile/TV/whole-platform releases, so /releases/latest is not reliable for desktop specifically).

The app ships with seamless auto-update (signed installers + in-app updater) since desktop-v1.2.3 — install once and future versions download in the background and prompt "Restart to update" when ready.

Platform Installers
macOS (arm64) .dmg, .app.tar.gz
macOS (Intel/x64) .dmg, .app.tar.gz
Windows (x64) .msi, .exe
Linux (x64) .deb, .AppImage

Android APK Direct Install

Every mobile-v* tag also publishes a signed APK to GitHub Releases for direct sideload install — no Play Store account needed. Download the .apk asset, enable "install unknown apps" for your browser/file manager, and open it. This is a separate path from the Play Store listing (which ships from the same version via a manual EAS Submit dispatch) — the two can be a build or two apart in practice.

Backend

All data access goes through Hasura GraphQL. Never use direct SQL or install pg / drizzle-orm at runtime. See .github/docs/settings-architecture.md for the GraphQL client pattern and env var reference.

Local API: https://api.praycalc.local.nself.org:8543/v1/graphql (port 8543) Production API: https://api.praycalc.com/v1/graphql

Documentation

Contribute

See .github/wiki/Contributing.md for architecture docs, contribution guidelines, and feature status.

License

MIT

About

GPS-accurate Islamic prayer time calculator

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages