MyQur'an adalah aplikasi web Al-Qur'an dan Hadits yang kaya fitur, yang awalnya dibangun dengan CodeIgniter dan sekarang telah di-refactor ke Laravel. Proyek ini dirancang untuk menyediakan akses mudah ke teks Al-Qur'an, terjemahan, tafsir, koleksi hadits, dan jadwal sholat. Salah satu fitur arsitektur utamanya adalah penggunaan sistem cache berbasis file JSON, yang menggantikan kebutuhan akan database tradisional untuk sebagian besar konten.
- Penjelajahan Al-Qur'an: Lihat Al-Qur'an berdasarkan Surah, Juz, Ruku', atau Halaman.
- Pencarian Lanjutan: Cari di dalam teks Al-Qur'an dan koleksi Hadits.
- Koleksi Hadits: Akses koleksi hadits dari para perawi besar seperti Bukhari, Muslim, Abu Daud, dan lainnya.
- Jadwal Sholat: Dapatkan jadwal sholat yang akurat berdasarkan lokasi.
- Sumber Daya Islami: Akses doa-doa harian dan bacaan Tahlil.
- Dukungan AMP: Halaman yang dioptimalkan untuk seluler (Accelerated Mobile Pages) untuk pengalaman pengguna yang cepat di perangkat seluler.
- Integrasi Bot Telegram: Berinteraksi dengan fungsionalitas Al-Qur'an melalui bot Telegram.
- Kustomisasi Masjid: Pengguna dapat mendaftarkan masjid mereka dan menyesuaikan jadwal sholat.
Anda dapat melihat demo langsung dari aplikasi ini di https://myquran.cloud.
Aplikasi ini menggunakan beberapa API eksternal untuk menyediakan datanya:
- Al Quran Cloud: Untuk data teks dan terjemahan Al-Qur'an.
- Hadith-API: Untuk koleksi hadits.
- API myQuran: Untuk jadwal sholat.
- API Doa Sehari-hari: Untuk doa-doa harian.
- API Doa Tahlil: Untuk bacaan Tahlil.
- Framework: Laravel 12.28.1
- Bahasa: PHP 8.2.13
- Database: SQLite (untuk sesi, cache, dan data relasional lainnya)
- Frontend: Blade Templates, CSS, JavaScript
- Caching: Sistem cache kustom berbasis file JSON
- Paket Utama:
laravel/framework: 12.28.1laravel/prompts: 0.3.6laravel/pint: 1.24.0laravel/sail: 1.45.0phpunit/phpunit: 11.5.36
- Clone repositori:
git clone https://github.com/your-username/myquran-lara.git cd myquran-lara - Instal dependensi:
composer install npm install
- Buat file
.env: Salin.env.exampleke.envdan konfigurasikan variabel lingkungan Anda, terutamaAPP_NAME,APP_URL, danTELEGRAM_BOT_TOKEN.cp .env.example .env
- Hasilkan kunci aplikasi:
php artisan key:generate
- Jalankan migrasi database:
Proyek ini menggunakan SQLite, jadi pastikan file
database/database.sqliteada.touch database/database.sqlite php artisan migrate
- Jalankan server pengembangan:
php artisan serve
Proyek ini mengikuti struktur direktori standar Laravel, dengan beberapa penyesuaian penting:
app/Http/Controllers: Berisi controller utama untuk fungsionalitas Al-Qur'an, Hadits, Bot, dan halaman umum.app/Models: Berisi model-model yang berinteraksi dengan data, termasukQuranModelyang sekarang sudah tidak digunakan lagi dan digantikan olehCacheService.app/Services: BerisiCacheServiceuntuk mengelola cache berbasis file danTelegramServiceuntuk integrasi bot.resources/views: Berisi semua template Blade, dengan subdirektori untuk halaman AMP (amp) dan tampilan bot (bot).storage/app/cache: Direktori utama untuk file cache JSON, diatur berdasarkan kategori (quran, hadits, prayers, locations).public/inc: Berisi semua aset statis seperti gambar, font, audio, JS, dan CSS.
Aplikasi ini mengekspos beberapa endpoint untuk fungsionalitas intinya:
/: Halaman utama, menampilkan indeks Al-Qur'an./surah/{surah}: Menampilkan surah tertentu./juz/{juz}: Menampilkan juz tertentu./hadits/{kitab}: Menampilkan koleksi hadits dari kitab tertentu./jadwal/{masjid}: Menampilkan jadwal sholat untuk masjid tertentu./bot/webhook: Endpoint untuk webhook bot Telegram.
Meskipun sebagian besar data disajikan dari file JSON, database SQLite digunakan untuk tabel-tabel berikut:
users: Menyimpan informasi pengguna, termasuk detail Telegram untuk integrasi bot.sessions: Menyimpan data sesi pengguna.cache&cache_locks: Digunakan oleh sistem cache Laravel.jobs&failed_jobs: Digunakan untuk antrian (queueing).jadwal_sholat_harian: Menyimpan jadwal sholat yang dikustomisasi untuk masjid-masjid.
Kami menyambut baik kontribusi dari siapa saja. Jika Anda ingin berkontribusi pada proyek ini, silakan ikuti langkah-langkah berikut:
- Fork repositori: Buat fork dari repositori ini ke akun GitHub Anda.
- Buat branch baru: Buat branch baru untuk fitur atau perbaikan bug Anda (
git checkout -b fitur/nama-fitur-anda). - Lakukan perubahan: Lakukan perubahan yang diperlukan pada kode.
- Commit perubahan Anda: Commit perubahan Anda dengan pesan yang jelas (
git commit -m 'Menambahkan fitur X'). - Push ke branch Anda: Push perubahan Anda ke branch di repositori fork Anda (
git push origin fitur/nama-fitur-anda). - Buat Pull Request: Buka Pull Request dari branch Anda ke branch
maindari repositori ini.
Pastikan untuk mengikuti standar pengkodean yang ada dan mendokumentasikan setiap perubahan besar.