Skip to content

bdevgroup/miqaat

Repository files navigation

Miqāt

miqāt (ميقات) — Arabic: "an appointed time." The word names the boundaries between prayers, the seasons of the hajj, the moment a shadow equals its height.

A serene, local-first desktop app for prayer times, Qibla, Hijri calendar, and Athan playback. Works offline. Ships at miqaaat.com.

release downloads platform license CI

Miqāt — desktop prayer-time app, Miqāt theme, with Qibla compass and live radio sidebars

Features

Feature Details
Prayer times Fajr, Sunrise, Dhuhr, Asr, Maghrib, Isha · 12/24h · live countdown
Offline-first Computed locally with adhan, synced with Aladhan when online
Location Geolocation + worldwide city search (Nominatim) · saved locations
Athan player Four reciters (Makkah/Madina/Al-Aqsa/Egypt), Dua after Athan, volume, progress
Calculation All Aladhan methods · Shafi / Maliki / Hanbali / Hanafi madhab
Hijri Umm al-Qura via Intl (offline) · converter
Qibla Bearing arrow + MapLibre map with line to Makkah
Themes Miqāt (default) · Light · Dark · Paper
Notifications Per-prayer toggles · 0/5/10/15/30 min pre-alerts · auto-launch on login
Kinetic identity Wordmark rotates with the Sundial Mark and becomes the Held Note during Athan playback
Desktop Tray, always-on-top widget (?mode=widget), auto-updater, ZIP build
i18n English · Français · العربية (with RTL)

Brand system

Three faces, one state machine:

State Mark
Idle miqāt wordmark — the macron over the ā is the horizon
Rotation Sundial Mark — a dot on an arc, positioned by current time within today's Fajr→Isha window
Athan playing Held Note — animated waveform that decays into stillness

See docs/brand.md for the full system, palette, and typography.

Architecture

Miqāt desktop architecture — Electron main + in-process NestJS + React renderer

See docs/architecture.md for the data flow, in-process NestJS rationale, and theme system.

Install

Grab the latest from Releases.

Platform Asset
Windows 10/11 Miqaat-X.Y.Z-win.zip
macOS 12+ Apple Silicon (M1/M2/M3/M4) Miqaat-X.Y.Z-arm64.dmg
macOS 12+ Intel Miqaat-X.Y.Z-x64.dmg
Linux Miqaat-X.Y.Z-x64.AppImage or Miqaat-X.Y.Z-x64.deb

macOS — first-launch workaround

The macOS builds are unsigned (no Apple Developer account yet). On first launch you'll see one of these — they're all the same Gatekeeper warning:

  • "Miqaat is damaged and can't be opened"
  • "Miqaat cannot be opened because Apple cannot check it for malicious software"
  • "...may harm your Mac"

Bypass with one Terminal command. Open Terminal.app (⌘+Space → "Terminal") and paste:

xattr -cr /Applications/Miqaat.app

That clears the com.apple.quarantine attribute Gatekeeper uses to flag downloaded apps. After this, double-clicking launches normally — and you only need to run it once per install. When Miqāt earns its Apple Developer cert, this step goes away.

Windows — first-launch workaround

SmartScreen may show "Windows protected your PC" on first launch (same root cause: unsigned binary). Click More infoRun anyway.

Linux

  • AppImage: chmod +x Miqaat-*.AppImage then double-click.
  • .deb: sudo apt install ./Miqaat-*.deb.

Getting started

npm install
npm run dev           # NestJS :3001 + Vite :5173 + Electron
npm run fetch:audio   # download Athan MP3s to client/public/audio/
npm test              # offline tests (14)
npm run test:online   # adds 250-case Aladhan parity sweep
npm run package       # ZIP build via electron-builder

See docs/getting-started.md for setup, docs/desktop-builds.md for packaging, docs/releasing.md for the release flow (one-shot bump → tag → matrix build → landing refresh), and docs/auto-updater.md for in-app update behaviour.

What's coming next is in ROADMAP.md — Quran integration, more languages, cloud sync, mobile companion.

Stack

  • Backend: NestJS 10 · SQLite (better-sqlite3, raw SQL) · adhan 4 · axios · luxon
  • Frontend: React 18 · Vite 6 · TanStack Query 5 · Tailwind CSS 4 · shadcn/ui · MapLibre GL · lucide-react · zustand
  • Desktop: Electron 34 · electron-builder (ZIP) · electron-updater

Contributing

Issues, PRs, and translation contributions all welcome. The codebase intentionally stays small and readable — please match the existing style (TypeScript strict, Tailwind 4, raw SQL with prepared statements on the server side).

If you're translating: most user-facing strings live in client/src/i18n/dict.ts. Add your locale alongside en/fr/ar and open a PR.

Acknowledgments

License

MIT © Develop Better Solutions.

About

Local-first desktop Athan and prayer-time app for Windows. Worldwide prayer times, Qibla, Hijri calendar, Friday companion. No tracking, no ads. MIT.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors