Skip to content

Repository files navigation

πŸ•Œ myAzan

Version Downloads Platform Offline First Built with AI

Electron TypeScript myAzan Offline First JAKIM Malaysia

Aplikasi desktop Electron.js untuk Windows 10/11 yang memainkan azan secara automatik mengikut zon waktu solat JAKIM, menyokong notifikasi awal, serta memainkan bacaan al-Quran atau zikir ketika sistem berada dalam keadaan idle.

Direka untuk berjalan 24 jam tanpa gangguan pada mini PC atau komputer desktop biasa.


🎯 Objektif

myAzan dibangunkan untuk kegunaan desktop atau mini PC yang berjalan 24 jam, dengan fokus kepada:

  • Azan automatik mengikut zon pilihan pengguna
  • Notifikasi audio sebelum masuk waktu solat tertentu
  • Mod offline-first β€” terus berfungsi tanpa internet selepas data dimuat turun
  • Lantunan audio idle (al-Quran / zikir) semasa tiada aktiviti audio lain
  • Antara muka pengguna sepenuhnya dalam Bahasa Melayu

πŸ“Έ Paparan Aplikasi

Paparan TV Showcase Halaman Utama Tetapan Tetapan Tetapan Tetapan

✨ Ciri Utama

Ciri Keterangan
πŸ”Š Azan Automatik Memainkan azan tepat pada waktunya mengikut zon JAKIM
πŸ”” Notifikasi Awal Bunyi peringatan beberapa minit sebelum masuk waktu
πŸ“– Audio Idle Lantunan al-Quran / zikir berterusan semasa tiada audio lain
🌐 Offline-First Berfungsi tanpa internet selepas data tahunan tersimpan
πŸ—ΊοΈ 58 Zon JAKIM Sokongan penuh semua zon seluruh Malaysia
πŸ’Ύ Simpanan Lokal Data waktu solat disimpan dalam SQLite, tiada bergantung awan
πŸ” Kitaran Tahunan Auto muat turun data tahun baru pada Oktober–Disember
🎚️ Kawalan Kelantangan Kelantangan berasingan untuk azan, notifikasi, dan idle
πŸš€ Mula Bersama Windows Boleh ditetapkan untuk bermula secara automatik ketika Windows dihidupkan
πŸ‡²πŸ‡Ύ Bahasa Melayu Semua UI, butang, dan mesej dalam Bahasa Melayu

πŸ—ΊοΈ Zon JAKIM Yang Disokong

Aplikasi menyokong 58 zon merangkumi 14 negeri seluruh Malaysia:

  • Wilayah Persekutuan (WLY01–WLY02) β€” 2 zon
  • Johor (JHR01–JHR04) β€” 4 zon
  • Kedah (KDH01–KDH07) β€” 7 zon
  • Kelantan (KTN01, KTN03) β€” 2 zon (tiada KTN02 dalam sistem JAKIM)
  • Melaka (MLK01) β€” 1 zon
  • Negeri Sembilan (NSN01–NSN03) β€” 3 zon
  • Pahang (PHG01–PHG05) β€” 5 zon
  • Perak (PRK01–PRK07) β€” 7 zon
  • Perlis (PLS01) β€” 1 zon
  • Pulau Pinang (PNG01–PNG02) β€” 2 zon
  • Sabah (SBH01–SBH07) β€” 7 zon
  • Sarawak (SWK01–SWK09) β€” 9 zon
  • Selangor (SGR01–SGR04) β€” 4 zon
  • Terengganu (TRG01–TRG04) β€” 4 zon

βš™οΈ Aliran Proses Aplikasi

1️⃣ Permulaan Aplikasi (Startup)

Apabila myAzan dibuka, ia menjalankan proses bootstrap secara berperingkat:

Buka aplikasi
    β”‚
    β–Ό
[1] Buka sambungan SQLite & jalankan migrasi pangkalan data
    β”‚
    β–Ό
[2] Baca tetapan pengguna β€” dapatkan kod zon aktif
    β”‚
    β”œβ”€β”€ Tiada zon aktif β†’ langkau sync, tunggu pengguna pilih zon
    β”‚
    └── Ada zon aktif ──────────────────────────────────────────┐
                                                                β”‚
    β–Ό                                                           β”‚
[3] Semak sama ada data waktu solat zon + tahun ini sudah ada  β—„β”˜
    β”‚
    β”œβ”€β”€ Data sudah ada β†’ guna cache lokal, tiada muat turun
    β”‚
    └── Data belum ada β†’ muat turun dari API JAKIM
            β”‚
            β”œβ”€β”€ Berjaya β†’ simpan dalam SQLite
            └── Gagal   β†’ log amaran, teruskan dengan data sedia ada
    β”‚
    β–Ό
[4] Mulakan Scheduler (semak waktu setiap 10 saat)
    β”‚
    β–Ό
[5] Mulakan Audio Engine (3 player berasingan)
    β”‚
    β–Ό
Aplikasi sedia & berjalan 🟒

2️⃣ Aliran Muat Turun Data Waktu Solat

Data waktu solat diambil dari API JAKIM e-Solat secara tahunan:

URL: https://www.e-solat.gov.my/index.php?r=esolatApi/takwimsolat&period=year&zone={zone}

Proses sync data:

syncPrayerTimesForZone(zoneCode)
    β”‚
    β–Ό
Semak: adakah data zon + tahun SEMASA sudah ada dalam SQLite?
    β”‚
    β”œβ”€β”€ Ada β†’ teruskan tanpa muat turun (jimat bandwidth)
    β”‚
    └── Tiada β†’ muat turun dari JAKIM API (sehingga 3 percubaan semula)
                    β”‚
                    β–Ό
                Validasi data:
                - β‰₯300 rekod wajib ada
                - Format tarikh DD-MMM-YYYY β†’ YYYY-MM-DD
                - Semua waktu fajr, dhuhr, asr, maghrib, isha mesti ada
                    β”‚
                    β–Ό
                Simpan ke jadual prayer_times dalam SQLite
    β”‚
    β–Ό
Semak: adakah bulan semasa Oktober–Disember?
    β”‚
    β”œβ”€β”€ Bukan β†’ selesai
    β”‚
    └── Ya β†’ cuba pra-muat data tahun BERIKUTNYA
              (supaya app terus berfungsi pada 1 Januari)

πŸ’‘ Mengapa pra-muat Oktober–Disember? Supaya apabila tahun baru bermula, data sudah siap dan azan masih berbunyi walaupun tiada internet.


3️⃣ Aliran Scheduler (Semakan Waktu Setiap 10 Saat)

Scheduler adalah "jam penyelaras" yang menentukan bila azan atau notifikasi perlu berbunyi:

[Setiap 10 saat]
    β”‚
    β–Ό
Dapatkan masa semasa & tarikh hari ini
    β”‚
    β”œβ”€β”€ Tarikh berubah? β†’ jalankan proses pertukaran hari:
    β”‚       - sync data waktu solat
    β”‚       - bersihkan log lama (>90 hari)
    β”‚
    β–Ό
Dapatkan zon aktif & data waktu solat hari ini dari SQLite
    β”‚
    β–Ό
Untuk setiap waktu solat (imsak, subuh, syuruk, dhuha, zohor, asar, maghrib, isyak):
    β”‚
    β”œβ”€β”€ [AZAN] Semak: adakah masa semasa dalam tetingkap 60 saat dari waktu azan?
    β”‚       β”‚
    β”‚       β”œβ”€β”€ Tidak β†’ langkau
    β”‚       β”‚
    β”‚       └── Ya β†’ semak trigger_log: adakah azan ini SUDAH berbunyi hari ini?
    β”‚                   β”‚
    β”‚                   β”œβ”€β”€ Sudah β†’ elak ulang, langkau
    β”‚                   └── Belum β†’ catat dalam trigger_log, cetuskan event AZAN πŸ”Š
    β”‚
    └── [NOTIFIKASI] Semak: adakah masa semasa dalam tetingkap 60 saat dari (waktu - X minit)?
            β”‚
            β”œβ”€β”€ Tidak β†’ langkau
            β”‚
            └── Ya β†’ semak trigger_log: adakah notifikasi ini SUDAH berbunyi hari ini?
                        β”‚
                        β”œβ”€β”€ Sudah β†’ elak ulang, langkau
                        └── Belum β†’ catat dalam trigger_log, cetuskan event NOTIFIKASI πŸ””

πŸ›‘οΈ Mekanisme anti-ulang: Setiap trigger yang dicetuskan disimpan dalam trigger_log. Sekiranya azan Maghrib telah berbunyi pada hari ini, ia tidak akan berbunyi lagi walaupun komputer disambungkan atau waktu ditetapkan semula.


4️⃣ Aliran Audio Engine (Sistem 3 Player Berkeutamaan)

myAzan menggunakan 3 player audio berasingan dengan sistem keutamaan yang ketat:

KEUTAMAAN AUDIO:  πŸ₯‡ Azan  >  πŸ₯ˆ Notifikasi  >  πŸ₯‰ Idle

Apabila Azan Dicetuskan

Event AZAN diterima dari Scheduler
    β”‚
    β–Ό
Semak: adakah fail MP3 azan ditetapkan dan wujud?
    β”‚
    β”œβ”€β”€ Tidak β†’ log amaran, azan tidak dimainkan
    β”‚
    └── Ya ──────────────────────────────────────────┐
                                                      β”‚
    β–Ό                                                 β”‚
Hentikan Notification Player (jika sedang main)      β—„β”˜
    β”‚
    β–Ό
Jeda Idle Player (jika sedang main)
    β”‚
    β–Ό
Main Azan Player dengan fail:
    - Waktu Subuh  β†’ gunakan fail "Azan Subuh"
    - Waktu lain   β†’ gunakan fail "Azan Selain Subuh"
    β”‚
    β–Ό
Azan selesai / ralat
    β”‚
    β–Ό
Sambung semula Idle Player (jika diaktifkan)

Apabila Notifikasi Dicetuskan

Event NOTIFIKASI diterima dari Scheduler
    β”‚
    β–Ό
Semak: adakah Azan sedang main?
    β”‚
    β”œβ”€β”€ Ya  β†’ abaikan notifikasi (azan lebih utama)
    β”‚
    └── Tidak ───────────────────────────────────────┐
                                                      β”‚
    β–Ό                                                 β”‚
Semak: adakah fail MP3 notifikasi ditetapkan?        β—„β”˜
    β”‚
    β”œβ”€β”€ Tidak β†’ langkau
    β”‚
    └── Ya ──────────────────────────────────────────┐
                                                      β”‚
    β–Ό                                                 β”‚
Jeda Idle Player                                     β—„β”˜
    β”‚
    β–Ό
Main Notification Player
    β”‚
    β–Ό
Notifikasi selesai / ralat
    β”‚
    β–Ό
Sambung semula Idle Player (jika diaktifkan)

Aliran Idle Audio (al-Quran / Zikir)

App dimulakan & idle diaktifkan
    β”‚
    β–Ό
Baca senarai fail MP3 dari folder yang dipilih
Isih mengikut nama fail (A β†’ Z)
    β”‚
    β–Ό
Main fail pertama
    β”‚
    β–Ό
Fail selesai β†’ main fail seterusnya
    β”‚         (jika fail terakhir β†’ kembali ke fail pertama)
    β–Ό
[Bila diganggu oleh Azan/Notifikasi]
    β”‚
    └── Jeda / hentikan idle
            β”‚
            └── Selepas azan/notifikasi selesai β†’ sambung semula mengikut mod:
                    - restart_playlist β†’ mulakan semula dari fail pertama
                    - restart_track    β†’ ulang semula fail yang sedang main
                    - resume_track     β†’ sambung dari kedudukan semasa

5️⃣ Aliran Pertukaran Hari & Tahun

[Scheduler mengesan tarikh berubah]
    β”‚
    β–Ό
Sync data waktu solat:
    β”œβ”€β”€ Data hari ini masih sama tahun β†’ terus guna dari cache
    └── Tahun bertukar (1 Jan) β†’ data tahun baru sudah pra-dimuat sebelumnya (Okt–Dis)
    β”‚
    β–Ό
Bersihkan trigger_log yang lebih lama dari 90 hari
    β”‚
    β–Ό
Scheduler terus berjalan seperti biasa πŸ”„

πŸ”§ Ciri Tetapan Pengguna

πŸ—ΊοΈ Pilihan Zon

  • Pengguna memilih negeri & zon dari senarai lengkap 58 zon JAKIM
  • Selepas zon ditukar, data waktu solat zon baru dimuat turun secara automatik (jika belum ada)
  • Data zon lama tidak dipadam, boleh digunakan semula jika zon ditukar balik

Tetapan Azan πŸ”Š (Halaman Tetapan)

Waktu Fail Audio
Subuh Boleh pilih fail MP3 berasingan
Zohor, Asar, Maghrib, Isyak Gunakan fail "Azan Selain Subuh"

Tetapan Pemberitahuan πŸ”” (Halaman Pemberitahuan)

Untuk setiap waktu solat, pengguna boleh:

  • βœ… Aktif / nyahaktif pemberitahuan
  • ⏱️ Tetapkan berapa minit sebelum waktu untuk pemberitahuan berbunyi
  • 🎡 Pilih fail MP3 pemberitahuan yang berbeza
  • πŸ”‰ Laraskan kelantangan pemberitahuan

Waktu yang disokong untuk pemberitahuan:

Waktu Lalai
Imsak Tidak diaktifkan, 10 minit sebelum
Subuh (Fajr) Diaktifkan, 15 minit sebelum
Syuruk Tidak diaktifkan, 5 minit sebelum
Dhuha Tidak diaktifkan, 5 minit sebelum
Zohor Diaktifkan, 15 minit sebelum
Asar Diaktifkan, 15 minit sebelum
Maghrib Diaktifkan, 15 minit sebelum
Isyak Diaktifkan, 15 minit sebelum

Tetapan Zikir / Audio Idle πŸ“– (Halaman Zikir)

  • Pilih folder yang mengandungi fail-fail MP3
  • Fail dimainkan mengikut susunan nama fail (A β†’ Z)
  • Selepas fail terakhir, ulang dari awal secara berterusan
  • Boleh aktifkan atau nyahaktifkan sepenuhnya
  • 3 mod sambung semula selepas gangguan azan/pemberitahuan

Kawalan Kelantangan 🎚️ (Halaman Audio)

  • Kelantangan Azan: 0–100
  • Kelantangan Notifikasi: 0–100
  • Kelantangan Idle: 0–100

Permulaan Automatik πŸš€ (Halaman Tetapan)

  • Togol "Buka Pada Startup" β€” hidupkan untuk myAzan bermula secara automatik apabila Windows dihidupkan
  • Sesuai untuk mini PC atau komputer yang sentiasa aktif

πŸ“± Halaman Aplikasi

Aplikasi myAzan mempunyai 6 halaman utama yang boleh dinavigasi melalui bar sisi (sidebar) di sebelah kiri skrin:


🏠 Papan Pemuka

Halaman utama dipaparkan secara lalai apabila aplikasi dibuka. Ia memaparkan:

  • Kiraan masa mundur β€” bar kemajuan menuju waktu solat seterusnya, bersama nama dan baki masa
  • Jam digital & tarikh β€” masa semasa dan tarikh hari ini
  • Zon aktif β€” zon JAKIM yang sedang digunakan ditunjukkan pada pil lokasi
  • Garis Masa Waktu Solat β€” carta visual menunjukkan kedudukan semua waktu solat dalam tempoh masa sehari
  • Grid Waktu Solat Hari Ini β€” 8 waktu solat (Imsak, Subuh, Syuruk, Dhuha, Zohor, Asar, Maghrib, Isyak) dalam susun atur bento, dengan waktu seterusnya ditonjolkan
  • Kad Status Zikir/Idle β€” menunjukkan sama ada audio idle sedang aktif dan nama fail semasa
  • Kad Status Sistem Audio β€” menunjukkan keadaan semasa audio engine (Idle, Azan, atau Notifikasi)

Jika zon belum dipilih, papan pemuka akan memaparkan arahan untuk pergi ke halaman Tetapan. Jika data waktu solat tidak ada, sistem akan cuba muat turun secara automatik dari API JAKIM.


βš™οΈ Halaman Tetapan

Halaman Tetapan membolehkan pengguna mengkonfigurasi zon waktu solat, fail audio azan, dan pilihan permulaan sistem:

πŸ“ Zon & Lokasi

Pengguna memilih kawasan melalui 2 peringkat dropdown:

Kawalan Fungsi
Dropdown Negeri Pilih negeri dari senarai 14 negeri Malaysia
Dropdown Zon JAKIM Pilih zon spesifik dalam negeri tersebut (contoh: WLY01 β€” Kuala Lumpur)

Selepas zon disimpan, sistem semak sama ada data waktu solat untuk zon baru sudah ada. Jika belum β†’ muat turun secara automatik dari JAKIM. Data zon lama tidak dipadam β€” boleh digunakan semula tanpa muat turun.

πŸ”Š Fail Audio Azan

Tetapan Keterangan
Azan Subuh Fail MP3 khas untuk azan waktu Subuh
Azan Selain Subuh Fail MP3 untuk Zohor, Asar, Maghrib, dan Isyak
πŸ”ˆ Kelantangan Azan Gelangsar 0%–100%

Klik "Pilih Fail" untuk buka dialog pemilihan fail Windows. Klik "βœ•" untuk padam pilihan.

⚠️ Jika fail tidak dipilih atau tidak lagi wujud, azan tidak akan dimainkan.

πŸš€ Permulaan Sistem

Kawalan Fungsi
Togol "Buka Pada Startup" Apabila diaktifkan, myAzan dilancarkan secara automatik setiap kali Windows dihidupkan

Semua perubahan hanya disimpan apabila butang "Simpan Perubahan" ditekan. Butang "Set Semula" memulihkan semula nilai asal sebelum disimpan.


πŸ”” Halaman Pemberitahuan

Halaman Pemberitahuan membolehkan pengguna mengurus bunyi peringatan sebelum masuk waktu solat. Terdapat 8 kad β€” satu untuk setiap waktu solat:

Untuk setiap waktu, pengguna boleh:

Kawalan Fungsi
Togol Aktif/Tidak Hidupkan atau matikan pemberitahuan untuk waktu tersebut
Input Minit Awal Bilangan minit sebelum waktu solat (0–60 minit)
🎡 Butang Fail Pilih fail MP3 pemberitahuan untuk waktu tersebut
Butang βœ• Padam pilihan fail
πŸ”ˆ Kelantangan Pemberitahuan Gelantangan global untuk semua pemberitahuan (0%–100%)

Tetapan lalai:

Waktu Aktif Minit Sebelum
Imsak ❌ 10 minit
Subuh βœ… 15 minit
Syuruk ❌ 5 minit
Dhuha ❌ 5 minit
Zohor βœ… 15 minit
Asar βœ… 15 minit
Maghrib βœ… 15 minit
Isyak βœ… 15 minit

πŸ›‘οΈ Setiap pemberitahuan hanya berbunyi sekali sehari. Walaupun aplikasi dimulakan semula, pemberitahuan yang sudah berbunyi tidak akan berulang pada hari yang sama.


🎡 Halaman Audio

Halaman Audio menyediakan kawalan kelantangan berpusat untuk semua jenis audio dalam aplikasi:

Jenis Audio Keterangan
πŸ•Œ Azan Kelantangan untuk semua azan (0%–100%)
πŸ”” Notifikasi Kelantangan untuk pemberitahuan waktu solat (0%–100%)
🎡 Idle Kelantangan untuk audio zikir/al-Quran latar (0%–100%)

Klik "Simpan Tetapan Audio" untuk menyimpan semua perubahan kelantangan.


πŸ“– Halaman Zikir

Halaman Zikir membolehkan pengguna mengkonfigurasi audio idle β€” lantunan al-Quran atau zikir yang dimainkan secara berterusan semasa tiada audio lain aktif:

πŸ“‚ Folder Al-Quran / Zikir

  • Klik "Pilih Folder" untuk memilih folder yang mengandungi fail-fail MP3
  • Fail akan dimainkan mengikut susunan nama fail (A β†’ Z) secara berulang
  • Senarai fail dalam folder dipaparkan di bahagian bawah halaman untuk rujukan

▢️ Kawalan Playback

Kawalan Fungsi
Togol "Aktifkan Audio Idle" Hidupkan atau matikan fungsi audio idle
πŸ”ˆ Kelantangan Idle Gelantangan khusus untuk audio idle (0%–100%)

Cara kerja audio idle:

  1. Semua fail .mp3 dalam folder disusun mengikut nama fail (A→Z)
  2. Fail pertama dimainkan apabila aplikasi dimulakan dan idle diaktifkan
  3. Fail seterusnya dimainkan secara automatik selepas setiap fail selesai
  4. Selepas fail terakhir selesai, senarai berulang semula dari fail pertama

3 Mod Sambung Semula selepas Azan/Pemberitahuan:

Mod Tingkah Laku
restart_playlist Kembali ke fail pertama dalam senarai (lalai)
restart_track Ulang semula fail yang sedang dimainkan dari awal
resume_track Sambung semula tepat dari kedudukan yang terputus

πŸ‘©β€πŸ’» Halaman Tentang

Halaman Tentang memaparkan maklumat tentang aplikasi dan pembangunnya dalam reka bentuk "Digital Sanctuary" yang moden:

πŸ§‘β€πŸ’» Kad Pembangun

Maklumat Nilai
Nama Fara Farizul
Jawatan Pembangun Utama
βœ‰οΈ Emel farxpeace@gmail.com
πŸ“ž Telefon +60137974467

πŸ–₯️ Kad Maklumat Perisian

Maklumat Nilai
Aplikasi myAzan
Platform Windows 10 / 11
Status Lesen Proprietari

🎯 Ciri Utama & Objektif Projek

Halaman ini turut memaparkan grid ciri-ciri utama aplikasi dan objektif projek β€” termasuk ketepatan waktu solat, pengalaman minimalis tanpa gangguan, dan integrasi yang harmoni dalam persekitaran desktop harian.

πŸ“‹ Footer Hak Cipta

  • Β© 2025 Fara Farizul. Hak Cipta Terpelihara.
  • Dibuat dengan β™₯ di Malaysia

βš™οΈ Tetapan Lalai (Default Settings)

Berikut adalah nilai lalai yang digunakan oleh myAzan selepas pemasangan baru, seperti yang ditetapkan dalam fail migrasi pangkalan data:

Tetapan Umum (app_settings)

Kunci Nilai Lalai Keterangan
active_zone_code SGR01 Zon aktif lalai β€” Gombak, Petaling, Sepang, Hulu Langat, Hulu Selangor, Shah Alam
idle_enabled false Audio idle dimatikan secara lalai
auto_download_next_year true Auto muat turun data tahun berikutnya pada Oktober–Disember
launch_on_startup true Bermula bersama Windows secara automatik

Tetapan Audio (audio_settings)

Tetapan Nilai Lalai Keterangan
azan_subuh_file_path NULL Tiada fail lalai β€” perlu dipilih oleh pengguna
azan_other_file_path NULL Tiada fail lalai β€” perlu dipilih oleh pengguna
idle_folder_path NULL Tiada folder lalai β€” perlu dipilih oleh pengguna
idle_enabled 0 (mati) Audio idle dimatikan secara lalai
idle_resume_mode restart_playlist Mulakan semula dari fail pertama selepas gangguan
idle_sort_mode filename_asc Isih fail mengikut nama (A β†’ Z)
azan_volume 100 Kelantangan azan β€” 100%
notification_volume 100 Kelantangan notifikasi β€” 100%
idle_volume 50 Kelantangan audio idle β€” 50%

Tetapan Notifikasi (notification_settings)

Waktu Aktif Lalai Minit Sebelum Lalai
Imsak ❌ Tidak 10 minit
Subuh (Fajr) βœ… Ya 15 minit
Syuruk ❌ Tidak 5 minit
Dhuha ❌ Tidak 5 minit
Zohor (Dhuhr) βœ… Ya 15 minit
Asar βœ… Ya 15 minit
Maghrib βœ… Ya 15 minit
Isyak (Isha) βœ… Ya 15 minit

πŸ’‘ Semua tetapan boleh diubah suai melalui halaman Tetapan, Pemberitahuan, Audio, dan Zikir dalam aplikasi.


πŸ’Ύ Struktur Data (Pangkalan Data SQLite)

myAzan menyimpan semua data secara lokal:

Jadual Fungsi
zones Senarai 58 zon JAKIM dengan nama negeri
prayer_times Cache data waktu solat tahunan dari JAKIM
app_settings Tetapan umum (zon aktif, dll.)
audio_settings Laluan fail azan, folder idle, mod sambung semula
notification_settings Tetapan per-waktu untuk notifikasi
trigger_log Log sejarah azan/notifikasi yang telah dimainkan (90 hari)

πŸ“ Hanya laluan fail yang disimpan dalam database, bukan kandungan MP3.


πŸ“‘ Sumber Data Waktu Solat

Aplikasi menggunakan API tahunan JAKIM e-Solat:

https://www.e-solat.gov.my/index.php?r=esolatApi/takwimsolat&period=year&zone={zone}

Contoh kod zon:

  • WLY01 β€” Kuala Lumpur & Putrajaya
  • SGR01 β€” Gombak, Hulu Langat, Sepang (Selangor)
  • JHR01 β€” Pulau Aur, Pulau Pemanggil (Johor)
  • KTN01 β€” Kota Bharu (Kelantan)

Data yang diterima mengandungi waktu harian untuk: Imsak Β· Subuh Β· Syuruk Β· Dhuha Β· Zohor Β· Asar Β· Maghrib Β· Isyak


πŸš€ Persediaan & Pemasangan

Keperluan Sistem (Windows)

Sebelum menjalankan npm install, pastikan perkara berikut telah dipasang:

  1. Node.js β€” muat turun dari nodejs.org (cadangan: LTS terbaru)
  2. Python 3.x β€” diperlukan oleh better-sqlite3 untuk kompilasi modul natif
  3. Visual Studio Build Tools dengan komponen "Desktop development with C++"

Langkah Pemasangan

# 1. Clone repositori
git clone <url-repositori>
cd myazan

# 2. Pasang semua kebergantungan
npm install

# 3. Jalankan aplikasi dalam mod pembangunan
npm start

Nota: npm install akan memuat turun binari Electron (~150 MB) dan membina better-sqlite3 untuk Electron. Proses ini mungkin mengambil masa beberapa minit.

πŸ› οΈ Perintah Berguna Semasa Pembangunan

Perintah Fungsi
npm start Kompil + lancarkan Electron (mod biasa)
npm run dev Mod pembangunan dengan hot-reload β€” kompil semula secara automatik apabila kod berubah
npm run compile Kompil sahaja (tanpa lancarkan Electron)
npm run typecheck Semak jenis TypeScript tanpa kompil
npm run lint Jalankan ESLint untuk semak kualiti kod
npm run format Format kod automatik menggunakan Prettier

Membina Pemasang Windows

npm run build

Pemasang NSIS dan fail EXE mudah alih akan dihasilkan dalam folder dist-build/.


πŸ“ Struktur Projek

src/
  main/
    bootstrap/         ← inisialisasi app
    database/
      migrations/      ← fail SQL migrasi
      repositories/    ← operasi CRUD per-jadual
    services/
      prayer-time/     ← JAKIM client, parser, sync
      audio/           ← audio engine (3 player + coordinator)
      scheduler/       ← semakan waktu & trigger event
      settings/        ← baca/simpan konfigurasi
      zones/           ← urus senarai zon
    ipc/               ← pendaftaran saluran IPC
  preload/             ← bridge selamat antara main & renderer
  renderer/            ← UI (HTML, TypeScript, CSS)
  shared/
    types/             ← jenis data dikongsi
    constants/         ← pemalar app

πŸ”’ Prinsip Keselamatan & Reka Bentuk

  • contextIsolation: true β€” renderer tidak boleh akses terus Node.js API
  • nodeIntegration: false β€” keselamatan Electron terjaga
  • Offline-first β€” app berfungsi walaupun internet tidak tersedia
  • Trigger anti-ulang β€” trigger_log memastikan azan/notifikasi tidak berbunyi berganda pada hari yang sama
  • Validasi laluan β€” semua laluan fail/folder disahkan wujud sebelum digunakan
  • Validasi data API β€” respon JAKIM disemak format dan jumlah rekod sebelum disimpan

πŸ“œ Status Lesen

Perisian ini adalah Proprietary Software.

  • Kod sumber adalah sulit dan tidak dibenarkan untuk diedarkan atau diubah suai tanpa kebenaran pemilik.
  • Aplikasi dalam bentuk binari boleh digunakan secara percuma tertakluk kepada syarat pemilik.

πŸ‘©β€πŸ’» Tentang Pembangun

myAzan dibangunkan oleh Fara Farizul dengan niat untuk memudahkan umat Islam menunaikan solat tepat pada waktunya, tanpa perlu bergantung kepada aplikasi awan atau sambungan internet yang berterusan. 🀲

Maklumat lanjut pembangun boleh dilihat dalam aplikasi melalui halaman Tentang (πŸ§‘β€πŸ’» Kad Pembangun).

About

Aplikasi desktop offline-first untuk memainkan azan secara automatik berdasarkan waktu solat JAKIM di Malaysia

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages