İçeriğe geç

Web + mobil uygulama · Ücretsiz · Canlı

Hatim App hatim.app

“Kur'an'ı birlikte hatmedelim.”

Ailenle, arkadaşlarınla ya da camideki cemaatle bir hatim grubu kur. Herkes cüzünü alır, okuyunca işaretler; halka dolunca hatim tamam. Kur'an'ı kitap gibi oku, Afâsî'den dinle, kaldığın yerden devam et.

  • Next.js · Expo
  • TypeScript
  • Web · Android · iOS
  • Türkçe · English
Hatim App Kur'an okuyucu: mushaf sayfası düzeninde âyetler
Hatim App grup hatmi ekranı: 30 cüzün durumu ve ilerleme halkası
  • 3Platform tek çekirdekte: web, iOS ve Android
  • 52Use case; kural bir kez yazılır, üç taraf kullanır
  • 272Otomatik test, gerçek Postgres'te yarış testleri dahil
  • 29K+Satır TypeScript, tek monorepo
Hikâye

Bir hatim, otuz cüz, tek ekran. Kimse liste tutmasın.

Grup hatmi eski ve güzel bir gelenek: ailede, camide, WhatsApp grubunda cüzler paylaştırılır. Ama "kim hangi cüzü aldı, kim bitirdi" listesi elle tutulur ve mesajların arasında kaybolur.

Hatim App bunu tek ekrana taşıyor. Yönetici hatmi açar, herkes boş cüze dokunup alır, okuyunca "Okudum" der. Biri cüz aldığında gruptaki herkesin ekranı kendiliğinden yenilenir; halka dolunca hatim tamamlanır.

Hedef, 60 yaşındaki birinin yardımsız kullanabilmesi: büyük düğmeler, sade Türkçe, okumak için hesap bile gerekmez. Görsel dil de dini hassasiyetle sınırlı: yalnız 8 köşeli yıldız ve geometrik desen, canlı figür yok, göğe yükselen efekt yok.

Allah kabul etsin
Halka dolup hatim tamamlanınca ekranda beliren cümle.
Boş cüze dokununca açılan pencere: Okudum, Okumaya başla, Cüzü bırak

Uygulamayı farklı kılan iki şey

01Kitap gibi okuyucu

Sayfa, parmağının tuttuğu yerden katlanır

Âyetler Medine mushafının sayfa düzeninde dizilir ve sayfa gerçek bir kitap gibi sağdan sola çevrilir. Katlanma geometrisi ve sayfaya sığan yazı boyutu ortak bir pakette; web ve mobil aynı motoru kullanır.

  • Gerçek bir sayfa çevirme kaydı yaprağı izler: sayfa yarıda tutulunca ses de durur, geri bırakılırsa söner.
  • Dokuz yazı boyutu; büyük yazıda sayfa kendi içinde kayar, meal de büyür.
  • Tilâvette okunan âyet hep oynatıcının üstünde görünür kalır.
@hatim/book
Kitap gibi katlanan Kur'an sayfası

02Grup hatmi

Canlı güncellenir, çift dokunuşa dayanıklıdır

Biri cüz alınca ya da okuyunca gruptaki herkesin ekranı kendiliğinden yenilenir. Aynı cüze iki kişi aynı anda dokunsa da cüzün tek sahibi olur; aynı düğmeye iki kez basmak hiçbir şeyi bozmaz.

  • Kural çekirdekte saf fonksiyon: aynı işlem ikinci kez gelirse durum değişmez.
  • Sunucuda satır kilidi ve koşullu güncelleme; yeni kayıtta Idempotency-Key.
  • Adetli hatim: sûre, Âyetü'l-Kürsî ya da zikir için hedef sayı, üye başına pay.
MarkJuzRead.ts
Grup hatmi ekranı
İçerik

Neler var, ne işe yarar?

Hatim türleri4

  • Kur'an hatmi30 cüz

    30 cüz gruba dağılır; halka dolunca hatim tamam.

  • Sûre hatmiAdetli

    Bir sûre için hedef sayı, üye başına pay.

  • Âyetü'l-KürsîAdetli

    Grupça belli sayıda okuma.

  • ZikirSayaçlı

    Salavat, istiğfar, tesbih, hamd, tekbir, kelime-i tevhid.

Okuma5

  • MealTR · EN

    Türkçede Diyanet, İngilizcede Sahih International; âyete basılı tutunca ya da bilgisayarda sayfanın yanında.

  • Afâsî tilâvetiSesli

    Âyet âyet çalar, ekran kilitliyken de sürer.

  • İnternetsiz okumaÇevrimdışı

    Kur'an metni ve meal uygulamanın içinde.

  • Kaldığın yerOtomatik

    Okuduğun âyet kendiliğinden kaydedilir, her cihazda devam.

  • Yer imleri

    Âyeti işaretle, istediğin an dön.

Topluluk5

  • Açık ve gizli gruplarOnaylı

    Açık grubu arayan bulur; gizliye istekle katılınır.

  • WhatsApp daveti

    Bağlantıya dokunan grubu takip eder, kod yazmak yok.

  • BildirimlerPush

    Yeni hatim, okunan cüz, tamamlanan hatim.

  • Günlük hatırlatmaSaatli

    Seçtiğin saatte okuma hatırlatması.

  • Hesapsız okuma

    Okumak için giriş gerekmez; gruba katılırken e-postayla tek adım.

Kod yapısı

Üç uygulama, tek kural kitabı.

Web sitesi, iOS/Android uygulaması ve sunucu aynı çekirdeği kullanır. İş kuralı bir kez yazılır; arayüz de sunucu da onu yeniden yazmaz. Bağımlılık yalnız içe akar ve sınırları ESLint korur.

Katmanlar ve bağımlılık yönü

  1. @hatim/core

    Saf iş kuralları ve portlar: hatim, cüz, pay, grup, bildirim. React yok, DOM yok.

    Hiçbir şeye bağlı değil

  2. @hatim/book

    Kitap motoru: sayfa katlama geometrisi, dizgi, sayfa çevirme sesi.

    Hiçbir şeye bağlı değil

  3. @hatim/data

    Port uygulamaları: API istemcisi, sahte veri, cihazda saklanan ayar ve yer imi.

    Bağlı olduğu→ core

  4. api

    Bun + Hono + PostgreSQL. Uç yalnız doğrular ve use case'i çağırır.

    Bağlı olduğu→ core

  5. web

    Next.js 16 site ve PWA; çevrimdışı okuma.

    Bağlı olduğu→ core→ data→ book

  6. mobile

    Expo + React Native: iOS ve Android.

    Bağlı olduğu→ core→ data→ book

packages/core/src/application/use-cases/khatm/index.ts
class MemberAction<A> {
  constructor(
    private readonly ruleFn: MemberRule<A>,
    protected readonly groups: GroupRepository,
    private readonly khatms: KhatmRepository,
    private readonly session: SessionReader,
    private readonly clock: Clock,
  ) {}
  async execute(groupId: string, khatmId: string, arg: A): Promise<Khatm> {
    const user = await signedInUser(this.session);
    // Yönetici de üyelik tablosundadır
    if ((await this.groups.membership(groupId, user.id)) !== "member") throw authRequired("joinGroupFirst");
    const k = await fetchKhatm(this.khatms, groupId, khatmId);
    const updated = this.ruleFn(k, arg, { id: user.id, name: user.name }, this.clock.now());
    if (updated !== k) {
      await this.khatms.save(updated);
      await this.changed(updated, arg, user);
    }
    return updated;
  }
  protected async changed(_k: Khatm, _arg: A, _user: User): Promise<void> {}
}
Cüz alma, bırakma, okudum ve pay işlemlerinin ortak akışı. Kural saf fonksiyon; durum değişmediyse hiçbir şey yazılmaz, bildirim de gitmez.

Kurallar

  • 01

    Kural bir kez yazılır

    İş kuralı arayüzde ya da API ucunda yeniden yazılmaz; @hatim/core'a girer, üç taraf oradan kullanır.

  • 02

    Bağımlılık içe akar

    domain → application → infrastructure → di → presentation. Arayüz depoya doğrudan bağlanamaz.

  • 03

    Çift dokunuşa dayanıklı

    Veritabanı kısıtı, satır kilidi ve Idempotency-Key. Aynı istek ikinci kez gelirse hiçbir şey değişmez.

  • 04

    Çekirdek metin üretmez

    Hata bir kod olarak döner, arayüz sözlükten çevirir. Türkçe ve İngilizce tek sözlük, web ve mobil ortak.

  • 05

    Aynı ad, aynı iş

    Atomic Design: Button, Sheet, KhatmScreen web'de ve mobilde aynı adla aynı işi yapar.

  • 06

    İnternetsiz çalışır

    Kur'an metni ve meal gömülü; web'de service worker gezilen sayfaları saklar.

Teknolojiler

  • TypeScript
  • Bun
  • Next.js 16
  • React 19
  • Expo SDK 58
  • React Native
  • Reanimated
  • Hono
  • PostgreSQL
  • Drizzle
  • Better Auth
  • Firebase (FCM)
  • Web Push
  • Vitest
  • EAS
Üretim süreci

Yapay zeka ajanlarıyla, insan denetiminde üretildi.

Hatim App, yapay zeka ajanlarını bir ekip gibi yönettiğim üretim düzeninin bir örneği daha. Mimari, dini ve görsel kurallar, son karar bende; tekrar eden iş ajanlarda.

  1. Her paketin kendi hafızası

    Kökte ve her alt projede CLAUDE.md: mimari, kod kuralları, dini ve görsel kurallar. Ajan projeyi baştan taramaz, ilgili belgeyi okur.

  2. Ekranda görmeden bitmiş sayılmaz

    Web önizlemede, mobil iOS simülatöründe ekran görüntüsüyle doğrulanır; Android bildirimleri gerçek cihazda denendi.

  3. Tek dokunuşla yayın

    main'e gönderim: test, derleme, sunucu, sağlık kontrolü, hata olursa geri dönüş. Mobilde EAS derlemesi ve uygulama içi güncelleme.

  4. Instagram için video motoru

    Hatim Reels serisi kendi motorunda üretilir: Afâsî tilâveti, âyet metni ve kapanışta hatim ilerleme çubuğu.

Yol haritası

Yapıldı

  • hatim.app canlı: site, API, e-posta kodu ve Google ile giriş
  • Kitap gibi Kur'an okuyucu, Diyanet meali, Afâsî tilâveti
  • Grup hatmi: canlı güncelleme, açık ve gizli grup, davet
  • Adetli hatim: sûre, Âyetü'l-Kürsî ve zikir
  • Bildirimler: FCM, Web Push ve günlük hatırlatma
  • Android uygulaması Google Play kapalı testinde

Sırada

  • Google Play'de herkese açık yayın
  • App Store ve iOS bildirimleri
  • Apple ile giriş
  • Türk mushafı sayfa düzeni
  • Kur'an okumayı öğrenme

Web sürümü hatim.app'te canlı ve ücretsiz. Android uygulaması Google Play'de kapalı testte, iOS sürümü henüz mağazada değil. Kaynak kod özel depoda.

Birlikte yapalım

Aklında bir uygulama mı var?

Web, iOS ve Android'i tek kod tabanında, fikirden mağazaya kadar geliştiriyorum. Fikrini 15 dakikada konuşalım.