Skip to content

Repository files navigation

تقویم

تقویم ایرانی با رابط کاربری فارسی و راست‌چین. الهام‌گرفته از time.ir، با هویت بصری مدرنِ ایرانی.

نشان تقویم

امکانات

  • نمایش زمان زندهٔ تهران
  • تاریخ شمسی، میلادی و قمری به‌صورت هم‌زمان
  • تقویم ماهانهٔ شمسی با شروع هفته از شنبه
  • رویدادها و تعطیلی‌های رسمیِ برگزیده
  • ناوبری ماه/سال و بازگشت به امروز
  • تبدیل تاریخ بین شمسی، میلادی و قمری
  • محاسبهٔ فاصلهٔ بین دو تاریخ و محاسبهٔ سن
  • اوقات شرعی برای ۱۲ شهر ایران
  • ذخیرهٔ شهر انتخاب‌شده در مرورگر
  • چیدمان راست‌چین و واکنش‌گرا روی دسکتاپ و موبایل
  • پشتیبانی کیبورد برای ناوبری سلول‌ها و زبانه‌ها
  • بدون حساب کاربری، بدون تبلیغات، بدون پایگاه داده

پشتهٔ فنی

  • Next.js App Router
  • React 19
  • TypeScript
  • Tailwind CSS v4
  • jalaali-js برای تبدیل شمسی
  • adhan برای اوقات شرعی
  • lucide-react برای آیکن‌ها
  • @fontsource/vazirmatn برای تایپوگرافی فارسی
  • Vitest برای تست‌های واحد
  • Playwright برای تست‌های مرورگر

شروع سریع

npm install
npm run dev -- --port 3100

سپس مرورگر را روی http://127.0.0.1:3100 باز کنید.

پورت 3000 روی این ماشین اشغال است؛ به‌همین دلیل از 3100 استفاده می‌شود. لطفاً پردازش‌های نامرتبط روی پورت 3000 را متوقف نکنید.

اسکریپت‌ها

دستور توضیح
npm install نصب وابستگی‌ها
npm run dev -- --port 3100 سرور توسعه روی پورت ۳۱۰۰
npm test تست‌های واحد با Vitest
npm run typecheck بررسی TypeScript
npm run build ساخت نسخهٔ تولید
npm run test:e2e تست‌های مرورگر با Playwright

برای اجرای تست‌های مرورگر، ابتدا یک‌بار Chromium را نصب کنید:

npx playwright install chromium

ساختار پروژه

src/
├── app/
│   ├── globals.css       # سیستم بصری و رنگ‌ها
│   ├── icon.svg          # نشان تقویم (طلوع/برگ تقویم)
│   ├── layout.tsx        # چیدمان ریشه، RTL، فونت
│   └── page.tsx          # صفحهٔ اصلی
├── components/
│   ├── calendar-app.tsx  # وضعیت و چیدمان کلی
│   ├── today-panel.tsx   # ساعت و تاریخ امروز
│   ├── calendar-panel.tsx# گرید ماهانه و ناوبری
│   ├── events-panel.tsx  # رویدادهای روز انتخاب‌شده
│   ├── tools-panel.tsx   # تبدیل، فاصله، سن
│   └── prayer-panel.tsx  # اوقات شرعی شهرها
└── lib/
    ├── calendar.ts       # تبدیل و قالب‌بندی تاریخ
    ├── events.ts         # رویدادهای برگزیدهٔ تکرارشونده
    ├── prayer.ts         # اوقات شرعی با Adhan
    └── date-tools.ts     # ابزارهای عددی و محاسبات
tests/
└── calendar.spec.ts      # تست‌های E2E

سیستم بصری

  • پس‌زمینهٔ کرمی روشن: #f7f8f4
  • سبز تیرهٔ اصلی: #214f40
  • متن سبز تیره: #243e34
  • اکسنتِ سفالی: #a9503b
  • فونت: Vazirmatn
  • بدون گرادیان، بدون بلور اضافی

ملاحظات داده

  • تاریخ‌ها بر اساس روز مدنی در Asia/Tehran تفسیر می‌شوند، نه منطقهٔ زمانی ماشین.
  • تبدیل‌ها ظهر UTC برمی‌گردند تا پایدار باشند.
  • بازهٔ پشتیبانی‌شده: سال‌های شمسی ۱۲۰۰ تا ۱۶۰۰.
  • تاریخ‌های قمری از تقویم محاسباتی islamic-civil استفاده می‌کنند و ممکن است با تاریخ‌های رصدیِ ایران تفاوت داشته باشند.
  • رویدادها مجموعه‌ای برگزیده و تکرارشونده هستند، نه تقویم رسمیِ کامل.
  • اوقات شرعی با روش محاسبهٔ تهران و مختصات شهرها محاسبه می‌شوند.
  • نیمه‌شب شرعی، میانگینِ غروب تا فجر روز بعد است.
  • ساعت زنده از ساعت دستگاه در زمان تهران استفاده می‌کند، نه همگام‌سازی NTP.

مجوز

این پروژه شخصی است و فاقد مجوز عمومی منتشرشده است.

About

یک تقویم، بدون حواس‌پرتی. بدون ثبت‌نام. بدون تبلیغات. برای پیدا کردن روزها و برنامه‌ریزی لحظه‌ها.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages