PrayerChime is an offline, Persian-first Obsidian plugin that shows Islamic prayer times for cities in Iran. It uses the bundled Iranian city dataset and local calculation code, so daily prayer times are available without calling an external API.
The plugin is now available in Obsidian Community Plugins. Installing from Community Plugins is the recommended installation method.
| Desktop | Mobile |
|---|---|
![]() |
![]() |
PrayerChime has been published in Obsidian Community Plugins, so this is the preferred way to install and update it.
Use manual installation only if you need to test a local build or install a release outside Community Plugins.
Download or build the plugin files.
Create this folder in your vault:
<Vault>/.obsidian/plugins/prayer-chime/
Copy these files into that folder:
main.jsmanifest.jsonstyles.cssRestart Obsidian or run Reload app without saving from the command palette.
Enable PrayerChime from Settings → Community plugins.
If no valid city is selected, PrayerChime falls back to Tehran.
PrayerChime loads Iranian city data from src/data/iran-dataset.json, normalizes the dataset, and assigns each city a stable ID derived from its state, province, city name, latitude, and longitude.
Prayer times are calculated locally for the current Tehran date and formatted in the Asia/Tehran time zone. The view then renders enabled prayer-time items in this order:
The PrayerChime view updates item states every few seconds:
Open Settings → PrayerChime to configure the plugin.
Enable or disable each displayed item:
x button on the favorite chip.PrayerChime does not send your location, city selection, vault contents, or prayer-time settings to any external service. City data is bundled with the plugin, prayer times are calculated locally, and plugin preferences are stored through Obsidian’s normal plugin data storage in your vault.
main.js, manifest.json, and styles.css are in the plugin folder.[email protected] as its package managerpnpm install
pnpm run dev
pnpm run build
pnpm test
pnpm run lint
pnpm run version
.
├── README.md # English documentation
├── REAME-FA.md # Persian documentation
├── manifest.json # Obsidian plugin manifest
├── package.json # Scripts, metadata, and dev dependencies
├── styles.css # Plugin view and settings styles
├── tests/ # Vitest test suite
└── src/
├── core/
│ ├── constants.ts # View IDs, timing constants, ordering, and icons
│ └── settings.ts # Default settings and settings normalization
├── data/
│ └── iran-dataset.json # Bundled Iranian city dataset
├── services/
│ ├── adhan.ts # Local prayer-time calculation primitives
│ ├── city-service.ts # City dataset parsing, fallback, and search
│ └── prayer-service.ts # Calculation orchestration and time formatting
├── settings/
│ └── settings-tab.ts # Obsidian settings UI
├── types/
│ └── index.ts # Shared TypeScript types
├── utils/
│ ├── date.ts # Tehran date/time constants
│ └── format.ts # Persian digits, countdown, and date formatting
├── views/
│ └── prayer-times-view.ts # Obsidian item view renderer
└── main.ts # Plugin entry point
Contributions are welcome. Useful contributions include bug reports, feature requests, dataset fixes, documentation improvements, tests, and focused pull requests.
Before opening a pull request, run:
pnpm run build
pnpm test
PrayerChime is released under the MIT License.