Skip to content
Boda335Public

About

A powerful and flexible TypeScript library for calculating Islamic prayer times based on location, with customizable settings.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

Logo

Discord NPM License

Muwaqqit

Muwaqqit is a modern and flexible TypeScript library for fetching Islamic prayer times, full calendars, and Hijri/Gregorian date conversions — powered by the AlAdhan API.

🕌 Built with AlAdhan API
📅 Supports full-month and date-range calendars
🕰️ Works with city/country or GPS coordinates
🗓️ Converts between Gregorian ↔ Hijri

🔥 Features

  • 🌍 Fetch times by city/country or latitude/longitude
  • 🕰️ Retrieve daily prayer times
  • 📅 Retrieve monthly prayer calendar
  • 📆 Retrieve prayer times for a custom date range
  • 🗓️ Convert between Gregorian ↔ Hijri dates
  • 🧮 Choose from multiple calculation methods
  • ⏱️ Choose 12h / 24h / ISO time formats
  • 💡 Written in TypeScript — ready for Node.js, bots & web apps

📦 Installation

npm install muwaqqit

💡 Usage Example

TypeScript (ES Modules)

import { PrayerTimes } from 'muwaqqit';

const pt = new PrayerTimes({
  city: 'Cairo',
  country: 'Egypt',
  method: 5, // Egyptian General Authority of Survey
  format: '12h',
});

// 1️⃣ Today's prayer times
const today = await pt.getTimes(new Date());
console.table(today);

// 2️⃣ Full month calendar
const month = await pt.getMonth(10, 2025);
month.forEach(day => {
  console.log(`${day.date.readable} → Fajr: ${day.timings.Fajr}, Dhuhr: ${day.timings.Dhuhr}, Asr: ${day.timings.Asr}, Maghrib: ${day.timings.Maghrib}, Isha: ${day.timings.Isha}`);
});

// 3️⃣ Date range (1–7 Oct 2025)
const range = await pt.getRange('01-10-2025', '07-10-2025');
range.forEach(day => console.log(day.date.readable, day.timings));

// 4️⃣ Gregorian → Hijri
const hijri = await pt.toHijri('23-10-2025');
console.table(hijri);

// 5️⃣ Hijri → Gregorian
const gregorian = await pt.toGregorian('20-04-1447');
console.table(gregorian);

JavaScript (CommonJS)

const { PrayerTimes } = require('muwaqqit');

const pt = new PrayerTimes({
  city: 'Cairo',
  country: 'Egypt',
  method: 5,
  format: '24h',
});

(async () => {
  const times = await pt.getTimes(new Date());
  console.log("Today's Prayer Times:", times);
})();

🧠 API Reference

new PrayerTimes(options)

Option Type Required Description
city string ✅ City name (required if not using latitude)
country string ✅ Country name (required if not using latitude)
latitude number ✅ Decimal latitude (required if not using city)
longitude number ✅ Decimal longitude (required if not using city)
method number ❌ Calculation method (default = 2)
format "12h" | "24h" | "iso" ❌ Output time format (default = "24h")
timezone string ❌ Optional timezone override

🧩 Methods

Method Description
getTimes(date: Date) Get daily prayer times for a specific date
getMonth(month: number, year: number) Get full calendar for a month
getRange(start: string, end: string) Get prayer times for a custom date range (e.g., "01-10-2025", "07-10-2025")
toHijri(date: string) Convert Gregorian date to Hijri
toGregorian(date: string) Convert Hijri date to Gregorian

🛠️ Calculation Methods

Based on AlAdhan API:

ID Method
0 Shia Ithna-Ashari
1 University of Islamic Sciences, Karachi
2 Islamic Society of North America
3 Muslim World League
4 Umm Al-Qura University, Makkah
5 Egyptian General Authority of Survey
7 Institute of Geophysics, University of Tehran
12 Union Organization Islamic de France
... (see full list on AlAdhan API docs)

📬 Feedback & Support


📘 License

This project is licensed under the Apache-2.0 License — see the LICENSE file for details.

About

A powerful and flexible TypeScript library for calculating Islamic prayer times based on location, with customizable settings.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages