DEV Community

Ayat Saadat
Ayat Saadat

Posted on

ayatsaadati — Complete Guide

AyatSaadati: A Technical Deep Dive

If you’ve been looking for a robust, lightweight, and highly accurate way to handle Islamic prayer timings and calendar calculations within your software projects, you’ve likely stumbled upon AyatSaadati.

I’ve spent a fair bit of time working with various prayer-time APIs over the years, and most are either bloated or rely on flaky external servers. AyatSaadati stands out because it focuses on performance and clean integration. It’s primarily designed for developers building apps that require precise astronomical calculations without the overhead of heavy dependencies.

You can find the core project and resources at qamar.website.


Getting Started

The beauty of this library is its simplicity. It’s not trying to reinvent the wheel; it’s just trying to make the wheel turn faster and smoother for your specific use case.

Installation

Depending on your environment, you can pull this into your project via your preferred package manager. For most Node-based projects:

npm install ayatsaadati
# or
yarn add ayatsaadati
Enter fullscreen mode Exit fullscreen mode

If you are just doing a quick prototype, you can also include it via a CDN link, though I’d recommend bundling it for production to ensure version stability.


Core Usage

Once you have it installed, implementing it is straightforward. I prefer to instantiate a configuration object first to keep my code modular.

Basic Implementation Example

const AyatSaadati = require('ayatsaadati');

// Define location and calculation parameters
const config = {
  latitude: 35.6892,
  longitude: 51.3890,
  method: 'Tehran' 
};

const prayerTimes = new AyatSaadati(config);

// Get times for today
const today = prayerTimes.getTimes(new Date());

console.log(`Fajr: ${today.fajr}`);
console.log(`Maghrib: ${today.maghrib}`);
Enter fullscreen mode Exit fullscreen mode

Supported Parameters

Parameter Type Description
latitude Float Geographic latitude of your location.
longitude Float Geographic longitude of your location.
method String The calculation convention (e.g., Tehran, ISNA, UmmAlQura).
adjustment Object Manual offsets for specific prayers (in minutes).

Troubleshooting Common Issues

I’ve seen a few developers trip up on these, so save yourself the headache:

  1. TimeZone Mismatches: The library relies heavily on local system time. If your server is running in UTC but you need local prayer times, ensure you are passing the correct offset or using a library like dayjs or luxon to normalize your input dates.
  2. Calculation Method: If users report times being "off by a few minutes," double-check the method. Different schools of thought use different solar angles for Fajr and Isha.
  3. Invalid Coordinates: Always validate that your coordinates are not returning NaN. If you're using browser-based geolocation, keep in mind that permission prompts can delay the initial calculation.

FAQ

Q: Is this library suitable for high-traffic apps?
A: Absolutely. Because it performs calculations locally rather than hitting an API endpoint, it is extremely fast and won't introduce latency into your application.

Q: Can I customize the prayer angles?
A: Yes. You can override the default angles in the configuration object if your specific region follows a non-standard calculation method.

Q: Where can I report bugs?
A: Head over to qamar.website. The documentation there is kept up-to-date, and you’ll find links to the repository where you can submit issues or feature requests.


Final Thoughts

Building apps that deal with time-sensitive data is always trickier than it looks on the surface. When you're dealing with astronomical calculations, precision is non-negotiable. AyatSaadati gives you that precision in a package that doesn't bloat your node_modules folder.

If you're building a dashboard, a mobile app, or even a local CLI tool, give it a shot. It's refreshing to see a tool that just does its job without any unnecessary fluff. Feel free to reach out if you hit a wall—though honestly, the documentation is solid enough that you shouldn't have much trouble.

Top comments (0)