Website bacaan Al-Qur'an: teks Arab, terjemahan Bahasa Indonesia, audio murottal (Syekh Mishary Rashid Alafasy), dan tafsir Bahasa Indonesia. Dibangun dengan Next.js, menggantikan versi PHP lama (lihat branch legacy-php untuk kode sebelumnya).
Tidak ada panel admin — ini murni website baca untuk publik.
npm install
npm run devBuka http://localhost:3000.
Semua konten (teks Arab, transliterasi, terjemahan EN/ID, link audio, tafsir ID) diambil dari satu API: fork dari gadingnst/quran-api.
Live instance resminya (https://api.quran.gading.dev) dibatasi 10 request/5 menit per IP, jadi untuk pakai beneran disarankan deploy instance sendiri:
- Fork
gadingnst/quran-apike akun GitHub Anda. - Deploy fork tersebut ke Vercel (tombol "Deploy with Vercel" ada di README repo itu), atau jalankan sendiri dengan
npm startdi server/Docker manapun. - Set environment variable di project Next.js ini:
(lihat
QURAN_API_URL=https://nama-instance-anda.vercel.app.env.example). Variabel ini sengaja tanpa prefixNEXT_PUBLIC_— dibaca di server saat request (halaman tidak di-prerender statis saat build), jadi bisa diganti kapan saja lewat env var platform /docker run -etanpa perlu rebuild.
Tanpa env var ini, app otomatis fallback ke live instance resmi (dengan rate limit di atas) — cukup untuk development, tidak disarankan untuk production.
Catatan: link audio per-ayat (audio.primary/audio.secondary) mengarah ke CDN eksternal (cdn.alquran.cloud / cdn.islamic.network), bukan ke instance API itu sendiri — jadi streaming audio tidak ikut terbatas rate limit API.
Push ke main/master dan deploy lewat Vercel, atau platform hosting Next.js lain.
Ada Dockerfile (multi-stage, pakai output standalone Next.js, image akhir berbasis node:20-alpine) untuk testing build secara lokal tanpa Vercel.
# build image
docker build -t quranweb .
# jalankan, arahkan ke instance quran-api self-hosted Anda
docker run -p 3000:3000 -e QURAN_API_URL=https://nama-instance-anda.vercel.app quranwebAtau pakai docker-compose.yml (edit QURAN_API_URL di file-nya dulu):
docker compose up --buildBuild image tidak butuh akses jaringan ke API Qur'an sama sekali — halaman di-render per-request (export const instant = false), bukan di-generate statis saat next build/docker build.
Dua workflow di .github/workflows/:
ci.yml— jalan di tiap push/PR:npm run lint, typecheck (tsc --noEmit), dannpm run build.docker.yml— build image dariDockerfiledi CI (tidak push ke registry mana pun secara default) untuk memastikan Dockerfile selalu valid.