Skip to content

Latest commit

 

History

History
488 lines (339 loc) · 17 KB

File metadata and controls

488 lines (339 loc) · 17 KB

KanaDojo Hakkında | Ekran Görüntüleri | Arayüz & Tasarım Felsefesi | Kullanılan Teknolojiler | Başlangıç | Proje Yapısı | Katkıda Bulunma | Lisans | Teşekkürler | İletişim & Bağlantılar

KanaDojo かな道場

KanaDojo Banner GitHub Stars

Japonca öğrenmek için estetik, minimalist ve son derece özelleştirilebilir bir platform

Live Demo License Next.js React TypeScript

📖 KanaDojo Hakkında

KanaDojo, Hiragana, Katakana, Kanji ve kelime bilgisinde ustalaşmayı eğlenceli ve kolay hale getiren etkileşimli bir web tabanlı Japonca öğrenme platformudur. Estetiğe, özelleştirilebilirliğe ve etkili öğrenmeye odaklanılarak tasarlanan KanaDojo, her seviyeden Japonca öğrencisi için kapsamlı bir eğitim ortamı sunar.

İster daha yeni kana hecelerini öğrenmeye başlıyor olun, isterseniz de ileri düzey kanji ve kelimeler ile JLPT sınavlarına hazırlanıyor olun, KanaDojo akıcı, dikkat dağıtıcı öğelerden uzak sizin tercihlerinize ve öğrenme tarzınıza uyum sağlayan bir öğrenme deneyimi sunar.

✨ Öne Çıkan Özellikler

🎯 Üç Eğitim Dojosu

  • Kana Dojo - Hiragana ve Katakana hece sistemlerinde temel, dakuon, yoon ve yabancı ses gruplarını öğrenerek ustalaşın
  • Kanji Dojo - JLPT seviyelerine (N5, N4, N3, N2) göre düzenlenmiş, en önemli kanji karakterlerini öğrenin
  • Vocabulary Dojo - Yeterlilik seviyesine göre seçilmiş kelime koleksiyonları ile Japonca kelime bilginizi geliştirin

🎮 Dört Dinamik Oyun Modu

Her dojo, öğrenmeyi pekiştirmek için dört ilgi çekici eğitim modunu destekler:

  1. Seçmeli - Çoktan seçmeli: Gösterilen karakter için doğru romaji/çeviriyi seçin
  2. Tersten Seçmeli - Tersten çoktan seçmeli: Verilen romaji/çeviri için doğru karakteri seçin
  3. Yazma - Yazı yazma: Doğru romaji/çeviriyi yazın
  4. Tersten Yazma - Tersten yazı yazma: Doğru karakteri yazın

🎨 Kapsamlı Özelleştirme

  • 100+ Tema - Geniş bir koleksiyondan oluşan birbirinden güzel açık ve koyu temalardan birini seçin veya rastgele tema özelliğini kullanın
  • 28 Japon Yazı Stili - Estetik tercihinize göre çeşitli özgün Japon yazı tipleri arasından bir seçim yapın
  • Ses Efektleri - Açılıp kapatılabilen tatmin edici arayüz geri bildirim seslerinin keyfini çıkarın
  • Gösterim Seçenekleri - Seçim menüsünde Romaji/İngilizce ve Kana/Kanji gösterimleri arasında geçiş yapın
  • Kısa Yol Tuşları - Verimli öğrenme için klavye kısayolları (devre dışı bırakılabilir)

📊 İlerleme Takibi

  • Doğru/yanlış sayacı ile gerçek zamanlı geri bildirim
  • Motivasyonu sürdürmek için seri takibi
  • Öğrenim sürecinizi izlemek için istatistikler

🌐 Modern Web Deneyimi

  • Masaüstü, tablet ve mobil cihazlarda çalışan tamamiyle duyarlı tasarım
  • Kurulum gerektirmez - internet bağlantısı olan her yerde çalışın
  • Öğrenmeye odaklanmanızı sağlayan temiz, minimalist arayüz
  • Framer Motion tarafından sağlanan akıcı animasyonlar ve geçişler

🖼️ Ekran Görüntüleri

Ana Sayfa

Home

Kanji Seçim Menüsü

Kanji Selection Menu

Eğitim Sayfası

Training

Özelleştirme & Temalar

Themes

Fonts

🎨 Arayüz & Tasarım Felsefesi

KanaDojo, maksimum esneklikle birleştirilmiş minimalist bir estetiği benimser. Tasarım felsefesinin merkezinde şunlar yer alır:

Minimalizm Öncelikli

  • Dikkat dağınıklığını en aza indiren temiz arayüz
  • Eğitimin içeriğine odaklanın
  • Rahatca gezinme ve net bilgi hiyerarşisi
  • Amaca yönelik boşluk kullanımı

Estetik Özeleştirmeler

  • Yumşak pastel renklerden canlı neonlara kadar uzanan geniş tema kütüphanesi (100+ seçenek)
  • Hem açık ve hem de koyu modu destekler
  • Uzun süreli çalışma seansları sırasında göze rahat gelen, özenle seçilmiş renk paletleri
  • Kesintisiz tema geçişleri

Kullanıcı Deneyimi

  • Tatmin edici geri bildirimler sağlayan akıcı animasyonlar ve mini etkileşimler
  • Tüm ekran boyunlarına mükemmel uyum sağlayan duyarlı tasarım
  • Etkileşimler için sesli geri bildirim (isteğe bağlı)
  • Tüm bölümlerde tutarlı görsel dil

Japon Tipografisi

  • Çeşitli stilleri kapsyan 28 özgün Japon yazı tipi
  • Karmaşık kanji karakterlerinin düzgün gösterimi
  • Benzer görünen karakterler arasında net ayrım
  • Gerçek Japon metin örnekleriyle yazı tipi önizlemeleri

🛠️ Kullanılan Teknolojiler

KanaDojo, en iyi performans ve geliştirici deneyimi için modern web teknolojileri ile geliştirilmiştir:

Çekirdek Framework

  • Next.js 15 - Sunucu taraflı renderleme ve en iyi performans için App Router kullanan React framework'ü
  • React 19 - Eşzamanlı (concurrent) özelliklere sahip güncel React sürümü
  • TypeScript - Tür güvenli geliştirme

Tasarım & Arayüz

Durum Yönetimi

  • Zustand - Minimum başlangıç koduyla hafifletilmiş durum yönetimi
  • Zustand Persist - Kullanıcı tercihleri için yerel depolama kalıcılığı

Yardımcı Araçlar & Özellikler

Geliştirme Araçları

Analitik Veriler & Performans

🚀 Başlangıç

Önkoşullar

  • Node.js 18.x veya üstü
  • npm 10.x veya üstü (Node.js ile birlikte gelir)

Kurulum

  1. Depoyu klonlayın

    git clone https://github.com/lingdojo/kanadojo.git
    cd kanadojo
  2. Bağımlılıkları yükleyin

    npm install
  3. Geliştirme sunucusunu çalıştırın

    npm run dev
  4. Tarayıcınızı açın http://localhost:3000 adresine gidin

Yayın Ortamı için Derleme

# Yayın ortamı için optimize edilmiş derleme oluştur
npm run build

# Yayın sunucusunu çalıştır
npm start

Diğer Komutlar

# ESLint'i çalıştır
npm run lint

# Site haritasını oluştur (derlemeden sonra otomatik olarak çalışır)
npm run postbuild

Sorun Giderme

Geliştirme süresince sorunlar ile karşılaştıysanız, şu çözümleri deneyin:

Next.js Önbelleğini Temizle

macOS/Linux:

rm -rf .next
npm run dev

Windows (PowerShell):

Remove-Item -Recurse -Force .next
npm run dev

Windows (Komut İstemi):

rmdir /s /q .next
npm run dev

Node Modüllerini Temizle ve Tekrar Yükle

macOS/Linux:

rm -rf node_modules package-lock.json
npm install

Windows (PowerShell):

Remove-Item -Recurse -Force node_modules, package-lock.json
npm install

Windows (Komut İstemi):

rmdir /s /q node_modules
del package-lock.json
npm install

Tüm Önbellekleri Temizle (Kesin Çözüm)

macOS/Linux:

rm -rf .next node_modules package-lock.json
npm cache clean --force
npm install
npm run dev

Windows (PowerShell):

Remove-Item -Recurse -Force .next, node_modules, package-lock.json
npm cache clean --force
npm install
npm run dev

Windows (Komut İstemi):

rmdir /s /q .next
rmdir /s /q node_modules
del package-lock.json
npm cache clean --force
npm install
npm run dev

Port Zaten Kullanımda

Eğer 3000 portu zaten kullanımdaysa:

macOS/Linux:

# 3000 portunu kullanmakta olan işlemi bulun
lsof -i :3000

# İşlemi sonlandırın (PID'i gerçek işlemi ID'si ile değiştirin)
kill -9 PID

Windows (PowerShell/Komut İstemi):

# 3000 portunu kullanmakta olan işlemi bulun
netstat -ano | findstr :3000

# İşlemi sonlandırın (PID'i gerçek işlemi ID'si ile değiştirin)
taskkill /PID PID /F

Veya farklı bir portta çalıştırın:

# macOS/Linux/Windows
PORT=3001 npm run dev

📁 Proje Yapısı

kanadojo/
├── app/                        # Next.js App Router sayfaları
│   ├── kana/                   # Kana dojo sayfaları
│   │   └── train/[gameMode]/   # Her oyun modu için eğitim sayfaları
│   ├── kanji/                  # Kanji dojosu sayfaları
│   │   └── train/[gameMode]/
│   ├── vocabulary/             # Kelime dojosu sayfaları
│   │   └── train/[gameMode]/
│   ├── preferences/            # Ayarlar ve özelleştirmeler sayfası
│   ├── academy/                # Eğitici içerik
│   ├── layout.tsx              # Sağlayıcılar için kök tasarım planı
│   └── page.tsx                # Ana sayfa
│
├── components/                 # React bileşenleri
│   ├── Dojo/                   # Belirli eğitime özel bileşenler
│   │   ├── Kana/               # Kana seçimi ve kartları
│   │   ├── Kanji/              # Kanji seçimi ve kartları
│   │   └── Vocab/              # Kelime seçimi ve kartları
│   ├── reusable/               # Paylaşımlı bileşenler
│   │   ├── Menu/               # Gezinme ve menü bileşenleri
│   │   └── ...                 # Yeniden kullanılabilir diğer bileşenler
│   ├── Settings/               # Tercih bileşenleri
│   └── ui/                     # shadcn/ui bileşenleri
│
├── lib/                        # Yardımcı araçlar ve fonksiyonlar
│   ├── hooks/                  # Özel React hook'ları
│   │   ├── useAudio.ts         # Sesli geri bildirim hook'ları
│   │   └── ...
│   ├── interfaces.ts           # TypeScript arayüzleri
│   └── utils.ts                # Yardımcı fonksiyonlar
│
├── i18n/                       # Çeviri yönetim sistemi
│   └── request.ts              # Çevrilmiş metin getirme yardımcısı
│
├── store/                      # Zustand durum yönetimi
│   ├── useKanaKanjiStore.ts    # Kana/Kanji seçim durumu
│   ├── useVocabStore.ts        # Vocabulary seçim durumu
│   ├── useStatsStore.ts        # İstatistikler ve ilerleme
│   └── useThemeStore.ts        # Tema ve tercihler
│
├── static/                     # Statik veri ve yapılandırma
│   ├── kana.ts                 # Kana karakter verisi
│   ├── kanji/                  # JLPT seviyesine göre Kanji verisi
│   ├── vocab/                  # Kelime verileri
│   ├── themes.ts               # Tema tanımları
│   ├── fonts.ts                # Yazı tipi yapılandırmaları
│   └── info.tsx                # Bilgilendirici içerik
│
├── translations/               # Çevrilmiş metin içeriği
│   ├── en.json                 # İngilizce metin içeriği
│   └── es.json                 # İspanyolca metin içeriği
│
├── public/                     # Sabit dosyalar
│   ├── sounds/                 # Ses dosyaları
│   └── wallpapers/             # Arka plan resimleri

Temel Kavramlar


Durum Yönetimi Akışı

  1. Kullanıcı menü bileşenlerinde içeriği seçer
  2. Seçimler Zustand depolarında (useKanaKanjiStore, useVocabStore) saklanır
  3. Eğitim bileşenleri soruları oluşturmak için depolardan okur
  4. İstatistikler useStatsStore içersinde takip edilir ve saklanır
  5. Kullanıcı tercihleri localStorage kalıcılığı ile useThemeStore içerisinde kaydedilir

Bileşen Mimarisi

  • Dojo Bileşenleri: Her içerik türü için karakter/kelime seçimini yönetir
  • Eğitim Bileşenleri: Oyun modlarını ekranda oluşturur ve kullanıcı etkileşimini yönetir
  • Yeniden Kullanılabilir Bileşenleri: Paylaşımlı arayüz öğeleri (butonlar, kartlar, modallar, vb.)
  • Menü Bileşenleri: Gezinme, bilgi bölümleri ve dojo seçimi

Veri Organizasyonu

  • Kana: Türe (hiragana/katakana) ve gruplara (temel, dakuon, yoon, yabancı) göre düzenlenmiştir
  • Kanji: Okunuşları ve anlamları ile birlikte JLPT seviyesine (N5-N2) göre düzenlenmiştir
  • Vocabulary: JLPT seviyesine ve kelime türüne (isimler, fiiller vb.) göre düzenlenmiştir

Oyun Modu İmplementasyonu

Her oyun modu, aşağıdaki işlevleri yerine getiren dinamik bir yoldur (/[contentType]/train/[gameMode]):

  1. İlgili depodan seçilen içeriği okur
  2. Seçimden rastgele sorular üretir
  3. Anında geri bildirim sağlar
  4. İstatistikleri (doğru, yanlış, seri) takip eder

🤝 Katkıda Bulunma

Katkılarınızı bekliyoruz! KanaDojo, topluluk tarafından topluluk için geliştirilen açık kaynaklı bir projedir. Nasıl katkıda bulunacağınıza dair daha ayrıntılı bilgi için CONTRIBUTING.md dosyasına göz atın.

Nasıl Katkıda Bulunulur?

  1. Depoyu çatallayın
  2. Bir özellik dalı oluşturun (git checkout -b feature/AmazingFeature)
  3. Değişikliklerinizi katkı olarak işleyin (git commit -m 'Add some AmazingFeature')
  4. Dalı gönderin (git push origin feature/AmazingFeature)
  5. Bir Birleştirme İsteği(Pull Request) açın

Geliştirme Yönergeleri

  • Mevcut kod stilini ve kurallarını takip edin
  • Tür güvenliği için TypeScript kullanın
  • Değişikliklerinizi kapsamlı bir şekilde test edin
  • Gerektiğinde dökümanları güncelleyin
  • Bileşenleri tek bir amaca odaklı ve yeniden kullanılabilir tutun

📄 Lisans

Bu proje AGPL 3.0 Lisansı altında lisanslanmıştır - ayrıntılar için LICENSE.md dosyasına bakın.

🙏 Teşekkürler

  • Japonca dil verileri ve karakter bilgileri
  • Harika araçlar ve kütüphaneler için açık kaynak topluluğu
  • KanaDojo'yu daha iyi hale getirmek için katkı katkıda bulunanlar

📞 İletişim & Bağlantılar


**Dünya çapındaki Japonca öğrenenler için ❤️ ile yapılmıştır

がんばって! (Ganbatte! - Elinden gelenin en iyisini yap!)

⬆ Başa dön