Modern web teknolojileri kullanılarak geliştirilmiş, son derece kapsamlı, sosyal etkileşim odaklı ve yapay zeka destekli yeni nesil Kuran-ı Kerim platformu. Bu proje, sadece bir okuma uygulaması değil, aynı zamanda kullanıcıların dini konularda etkileşime girebileceği, günlük ibadetlerini takip edebileceği ve oyunlaştırma öğeleriyle motive olabileceği bir ekosistem sunar.
- 🌟 Detaylı Özellik İncelemesi
- 🏗 Teknik Mimari ve Altyapı
- 🗄 Veritabanı Şeması
- 🔌 API Dokümantasyonu
- 📱 Mobil ve PWA Özellikleri
- 🧩 Özel Bileşenler ve Kancalar (Hooks)
- ⚙️ Kurulum ve Geliştirme
- 🚀 Dağıtım (Deployment)
- 📝 Lisans Bilgisi
Bu modül, uygulamanın çekirdeğini oluşturur ve kullanıcı deneyimi (UX) en üst düzeyde tutulacak şekilde tasarlanmıştır.
- Hibrit Görünüm Motoru:
- Mealli Mod (Full View): Bu modda ayetler kartlar halinde listelenir. Her kartta Arapça metin ve Türkçe meal (seçilebilir kaynak: Diyanet, Hayrat, Ö.N. Bilmen) bulunur.
- İbadet Modu (Reading View): "Mushaf" deneyimini dijital ortama taşır. Tüm dikkat dağıtıcı unsurlar (butonlar, menüler, mealler) gizlenir. Sadece yüksek kontrastlı, okunaklı Arapça metin ekrana gelir.
- Yapay Zeka Destekli Semantik Arama (Cerebras AI):
- Klasik kelime eşleşmesi yerine anlam bazlı arama yapar (Örn: "Moralim bozuk" yazınca İnşirah suresini getirir).
- Teknoloji:
Llama-3.3-70bmodeli veCerebrasaltyapısı kullanılarak doğal dil işleme (NLP) yapılır. - Hız: Saniyenin altında (sub-second) cevap süresi ile anlık ayet önerileri sunar.
- Akıllı Ses Çalar (Audio Engine):
HTML5 Audo APIüzerine kurulmuştur.- Wake Lock API Entegrasyonu: Sure dinlenirken telefon ekranının kapanmasını engeller.
- Sure Sıralı Çalma: Bir sure bittiğinde otomatik olarak sıradaki sureye geçer.
- Arka Plan Oynatma: PWA özelliği sayesinde uygulama arka plandayken veya ekran kilitliyken çalmaya devam eder.
- Dinamik Meal Kaynakları: Kullanıcı tercihine göre anlık olarak değişebilen meal altyapısı (Diyanet, Elmalılı, Ö.N. Bilmen, Hayrat Neşriyat).
Kullanıcıların statik içerik tüketiminden çıkıp, dinamik bir topluluğun parçası olmasını sağlar.
- Konusal Kategorizasyon: Ayetler, Hadisler, Soru-Cevap, Tartışma ve Bilgi Paylaşımı başlıkları.
- Gelişmiş Yorum Sistemi: Reddit benzeri bir yapı ile forum gönderilerine ve yorumlara yanıt verilebilir.
- Etkileşim Bildirimleri:
- "Yorumuna yanıt geldi"
- "Gönderin beğenildi"
- "Bahsedildiğin bir konu var"
Günlük dini vecibelerin takibini kolaylaştıran araçlar seti.
- Gelişmiş Namaz Vakitleri:
- Kaynak:
vakit.vercel.appservisi üzerinden Diyanet uyumlu veriler. - Akıllı Önbellek (Caching): Şehir aramaları 24 saat, vakit verileri 1 saat sunucu tarafında önbelleklenir (Next.js Revalidation).
- Vakit Bildirimleri: Kullanıcının seçtiği vakitlerde (Vercel Cron ile çalışan) otomatik push bildirimleri.
- Geri Sayım Sayacı: Bir sonraki vakte kalan süreyi saniye bazlı gösterir. Kerahat vakitlerinde özel uyarı verir.
- Kaynak:
- Kuran Radyo:
Icecast/Shoutcastprotokollerini destekleyen, düşük gecikmeli canlı yayın oynatıcı.- Spectrum Analyzer görselleştirmesi (Canvas API ile ses dalgalarını görselleştirme).
Düzenli kullanımı teşvik eden psikolojik motivasyon sistemi.
- Streak (Zincir) Algoritması:
- Kullanıcının her gün en az 1 ayet okuması gerekir.
- Eğer bir gün kaçırılırsa "Freeze" (Dondurma) hakkı varsa zincir kopmaz.
- Freeze hakları, düzenli okuma yapılarak kazanılan "Coin"ler ile marketten alınabilir.
- Rozet Sistemi: Belirli başarılara (İlk Hatim, 30 Günlük Seri vb.) ulaşıldığında kazanılan dijital rozetler.
Uygulama kapalıyken bile kullanıcıya ulaşabilen sistem.
- Web Push Protocol: VAPID (Voluntary Application Server Identification) anahtarları ile imzalanmış güvenli payload gönderimi.
- Service Worker: Arka planda gelen push olaylarını yakalar ve işletim sistemi bildirimine dönüştürür.
- Cron Job: Vercel Cron entegrasyonu ile namaz vakitleri sunucu tarafında periyodik olarak kontrol edilir ve abonelere otomatik bildirim gönderilir.
- Yönetim Paneli: Kullanıcılar
/ayarlarsayfasından bildirim türlerini (Namaz, Okuma, Sosyal) tek tek özelleştirebilir.
Proje, performans ve ölçeklenebilirlik odaklı "Modern stack" üzerine kuruludur.
- Framework: Next.js 14.2 (App Router mimarisi).
- Dil: TypeScript (Strict mode açık).
- State Management: React Hooks (
useState,useContext) ve URL state senkronizasyonu. - Styling: Tailwind CSS +
clsx+tailwind-mergepaketi ile dinamik sınıflar. - Fonts:
next/fontile optimize edilmiş Google Fonts (Inter ve Amiri). - Icons:
lucide-reactkütüphanesi.
- Runtime: Next.js Server Actions ve Route Handlers (Edge uyumlu).
- Veritabanı: Supabase (PostgreSQL 15+).
- Authentication: Clerk (JWT tabanlı, session yönetimi).
- ORM: Doğrudan Supabase JS Client (Type-safe query builder).
- RLS (Row Level Security): Veritabanı seviyesinde erişim kontrolü. Her sorgu, kullanıcının
auth.uid()değerine göre filtrelenir. - XSS & CSRF: Next.js'in yerleşik korumaları aktiftir.
- Image Optimization:
next/imageile otomatik format dönüşümü (WebP/AVIF). - Code Splitting: Sayfa bazlı otomatik JS bölme.
- PWA Caching: Service Worker ile statik varlıkların (CSS, JS, Font) önbelleklenmesi.
Aşağıdaki şema, uygulamanın veri modelini özetler. Tüm tablolar public şemasındadır ve Supabase üzerinde barındırılır.
| Tablo | Açıklama |
|---|---|
profiles |
Kullanıcı profilleri (Puan, Streak, Şehir, Bildirim Ayarı). Clerk ID ile eşleşir. |
comments |
Kuran ayetlerine yapılan yorumlar. Recursive parent_id ile yanıtları destekler. |
forum_posts |
Forum gönderileri. Başlık, içerik ve kategori barındırır. |
forum_comments |
Forum gönderilerine yapılan yorumlar. |
post_likes |
Forum gönderi beğenileri (Çoklu beğeniyi önler). |
comment_likes |
Yorum beğenileri. |
push_subscriptions |
Kullanıcıların tarayıcı push abonelik bilgileri (Endpoint, Keys). |
notifications |
Uygulama içi bildirim geçmişi. Okundu/Okunmadı durumu. |
Stored Procedures (Fonksiyonlar):
toggle_post_like: Atomik beğeni işlemi (Ekle/Çıkar).toggle_comment_like: Yorumlar için atomik beğeni.
Uygulamanın iç (Internal) API rotaları src/app/api altındadır. Authentication kontrolü için Clerk session kullanılır.
GET /api/sure: Tüm sure listesi.GET /api/sure/[id]: Tekil sure detayları ve ayetleri.GET /api/ayet/[id]: Tekil ayet detayları.
GET/POST /api/user/bookmark: Yer imi yönetimi.GET /api/user/comment: Kullanıcının yorum geçmişi.
GET /api/search: Platform genelinde (Sure, Ayet, Forum) arama yapar.
POST /api/push/subscribe: Push aboneliği oluşturur.POST /api/notifications/send: Programatik bildirim gönderimi.GET /api/pray-times: Vakit hesaplama proxy'si.
Uygulama, @ducanh2912/next-pwa ile tam uyumlu bir PWA'dır.
- Installability:
src/hooks/usePWAInstall.tskancası, tarayıcınınbeforeinstallpromptolayını yakalar ve özel bir kurulum butonu sunar. - Offline Support: İnternet kesintisi durumunda
/offlinesayfası devreye girer. Önceden yüklenen sayfalar cache'den çalışmaya devam eder. - Manifest: Dinamik manifest dosyası, cihaz ana ekranında uygulama gibi görünmesini sağlar.
- Responsive grid yapıları (
grid-cols-1 md:grid-cols-3).
Platformun ayrıca bir adet gelişmiş yerel mobil uygulaması bulunmaktadır (/mobile dizini).
- WebView Mimarsisi: Web sitesini (
kuran.yasireymen.com) yerel bir uygulama performansıyla sunan gelişmiş WebView yapısı. - Gelişmiş Çevrimdışı Destek: İnternet bağlantısı koptuğunda kullanıcıyı karşılayan özel "İnternet Yok" ekranı ve yeniden bağlanma mekanizması.
- Native Branding: Web (PWA) ile senkronize logolar, açılış ekranları (splash) ve koyu tema desteği.
- Esnek Altyapı: Expo SDK 54 tabanlı,
react-native-webviewveexpo-networkile güçlendirilmiş yapı.
Navbar: Responsive üst menü. Mobilde hamburger menü, desktopta tam menü.QuranRadio: Canlı yayın oynatıcı.charts/BarChart,charts/PieChart: Recharts tabanlı veri görselleştirme bileşenleri.auth/AuthCard: Clerk formları için stilize edilmiş kapsayıcı.
usePWAInstall: PWA kurulum durumunu yönetir.usePageTracking: Görüntülenen sayfaları analitik servisine (Supabase) kaydeder.
- Node.js 18.17.0 veya üzeri
- npm veya yarn
- Git
-
Repoyu Klonlayın
git clone https://github.com/kullaniciadi/quran.git cd quran -
Bağımlılıkları Yükleyin
npm install
-
Çevresel Değişkenleri Ayarlayın
.env.localdosyasını oluşturun:# Clerk Auth NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_... CLERK_SECRET_KEY=sk_test_... # Supabase NEXT_PUBLIC_SUPABASE_URL=https://... NEXT_PUBLIC_SUPABASE_ANON_KEY=ey... # Web Push (VAPID) NEXT_PUBLIC_VAPID_PUBLIC_KEY=... VAPID_PRIVATE_KEY=... VAPID_SUBJECT=mailto:admin@example.com # AI Search (Cerebras) NEXT_PUBLIC_CEREBRAS_API_KEY=csk-...
-
Veritabanını Hazırlayın
supabase_schema.sqldosyasını Supabase SQL Editöründe çalıştırın. -
Başlatın
npm run dev
- Vercel'de yeni proje oluşturun.
- GitHub reponuzu bağlayın.
- Environment Variables bölümüne
.env.localiçeriğini girin. - Build komutu:
next buildolarak kalmalıdır. - Deploy edin.
Bu proje GNU General Public License v3.0 (GPLv3) altında lisanslanmıştır.
- Özgürlük: Yazılımı dilediğiniz amaçla kullanabilirsiniz.
- Erişim: Kaynak koduna erişim hakkınız vardır.
- Değişiklik: Kodu ihtiyaçlarınıza göre değiştirebilirsiniz.
- Dağıtım: Orijinal veya değiştirilmiş kopyaları dağıtabilirsiniz.
- Copyleft: (ÖNEMLİ) Eğer bu yazılımı değiştirip dağıtırsanız, kaynak kodunuzu da aynı lisans (GPLv3) altında, erişilebilir şekilde yayınlamanız zorunludur. Projeyi kapatıp (closed source) dağıtamazsınız.
Tam lisans metni için lütfen LICENSE dosyasını inceleyiniz.