Skip to content

About

Create recurring events based on the Persian (Jalali) calendar and export them as .ics files for Google Calendar, Apple Calendar, Outlook, and other calendar apps

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Jalali Recurring Event Generator

Google Calendar's recurrence rule (RRULE) only understands the Gregorian calendar. There is no way to tell it "repeat on the 20th of every Jalali (Persian/Shamsi) month" — a Gregorian BYMONTHDAY=20 rule always means the 20th of the Gregorian month, and the Jalali 20th lands on a different Gregorian day nearly every month (it drifts between roughly the 9th and 11th depending on the month lengths of both calendars).

This app sidesteps the problem instead of fighting it: rather than one repeating rule, it computes the correct Gregorian date for every occurrence of a given Jalali day-of-month, and bundles them into a single .ics calendar file you can import into Google Calendar (or Outlook, Apple Calendar, etc.) in one step. Each occurrence becomes its own event, so it's always on the right day and can be edited/deleted individually.

Features

  • Pick any Jalali day of month (1–31) to repeat on.
  • Choose what happens when a month is too short for that day (skip it, or fall back to the last day of the month).
  • All-day or timed events, with custom duration.
  • Repeat starting from any Jalali year/month, for 1–30 years.
  • Live preview table showing every Jalali date next to its Gregorian equivalent before you download.
  • One-click .ics download, ready to import.

Getting started

npm install
npm run dev

The dev server runs on http://localhost:43217.

Importing into Google Calendar

  1. Fill in the event details and click Download .ics.
  2. In Google Calendar (web), open Settings (gear icon) → Import & export.
  3. Under Import, select the downloaded file, choose the destination calendar, and click Import.
  4. All occurrences are added as individual events on their correct Gregorian dates.

How it works

  • jalaali-js converts each Jalali (year, month, day) to its Gregorian equivalent.
  • src/lib/jalali-occurrences.ts walks forward month by month in the Jalali calendar, generating one occurrence per month (with configurable handling of short months).
  • src/lib/ics.ts serializes those occurrences into a standard VCALENDAR/VEVENT ICS file — deliberately using one VEVENT per occurrence instead of an RRULE, since no Gregorian-based rule can express a Jalali monthly recurrence without drifting.

Tech stack

About

Create recurring events based on the Persian (Jalali) calendar and export them as .ics files for Google Calendar, Apple Calendar, Outlook, and other calendar apps

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages