StudyTrack, öğrencilerin çalışma oturumlarını takip etmelerine, hedefler belirlemelerine, ilerlemelerini görselleştirmelerine ve diğer öğrencilerle etkileşime geçmelerine yardımcı olmak için tasarlanmış bir uygulamadır.
-
Kimlik Doğrulama (Authentication)
- E-posta/Şifre ile kayıt olma ve giriş yapma.
- Google ile Giriş (OAUTH) entegrasyonu.
- E-posta doğrulama.
- E-posta üzerinden şifre sıfırlama.
-
Çalışma Zamanlayıcısı
- Çalışma süresini gerçek zamanlı takip etme.
- Oturumlar için ders seçimi.
- Çalışma geçmişini kaydetme.
-
Hedefler ve İstatistikler
- Günlük ve haftalık çalışma hedefleri belirleme.
- Gösterge panelinde görsel ilerleme çubukları ve özetler.
- Performansı analiz etmek için detaylı istatistik sayfası.
-
Topluluk
- Gönderiler: Düşüncelerinizi, ilerlemenizi veya sorularınızı toplulukla paylaşın.
- Yorumlar: Gönderiler altında tartışın.
- Beğeniler: Gönderilerle etkileşime geçin.
-
Profil Yönetimi
- Kişisel bilgileri güncelleme (Ad, Bölüm, Sınıf vb.).
- Profil fotoğrafı yükleme ve güncelleme (otomatik sıkıştırma ve depolama optimizasyonu ile).
- Özel ders listelerini yönetme.
-
Dinamik Yapılandırma (Remote Config)
- Uzaktan Kontrol: Ana sayfa karşılama mesajı ve özellik anahtarları ("Topluluk Sekmesini Göster" veya "Gizle") Firebase Remote Config üzerinden yönetilir.
- Otomatik Yenileme: Ana sayfayı her ziyaret ettiğinizde yapılandırma değerleri otomatik olarak yenilenir.
-
Bağlantı Kontrolü
- Global çevrimdışı (offline) algılama.
- Cihaz internet bağlantısını kaybettiğinde "İnternet Yok" ekranı gösterilerek etkileşim engellenir, bağlantı gelince normale döner.
- Framework: Flutter
- Durum Yönetimi (State Management): Riverpod (
riverpod_generatorile) - Navigasyon: GoRouter
- Backend: Firebase
- Authentication: Kullanıcı kimliği ve erişim yönetimi.
- Firestore: Kullanıcılar, gönderiler, yorumlar, oturumlar vb. için NoSQL veritabanı.
- Storage: Kullanıcı profil fotoğrafları ve gönderi görselleri için depolama.
- Remote Config: Dinamik uygulama yapılandırması.
- Analytics: Kullanım takibi.
- Messaging: İstenildiğinde kullanıcılara duyuru bildirimleri atılması.
- Flutter SDK (^3.9.2)
- Dart SDK
- Depoyu (Repository) klonlayın:
git clone https://github.com/salihefeserit/study-track
cd study_track- Bağımlılıkları yükleyin:
flutter pub get-
Firebase Kurulumu:
flutterfire_cliyüklü olduğundan emin olun veya yapılandırma dosyalarınızı manuel olarak yerleştirin.- Android:
google-services.jsondosyasınıandroid/app/içine koyun.
-
Kod Üretimi (Code Generation):
Bu proje riverpod_generator ve build_runner kullanmaktadır. Gerekli .g.dart dosyalarını oluşturmak için şu komutu çalıştırmalısınız:
dart run build_runner build --delete-conflicting-outputs- Uygulamayı çalıştırın:
flutter run"Topluluk" özelliklerinin (özellikle yorumlardaki profil senkronizasyonunun) doğru çalışması için Firestore'da bir Collection Group Index etkinleştirmeniz gerekir.
- Collection ID:
comments - Field Path:
userId - Query Scope: Collection Group
Eğer bu indeks eksikse, uygulama loglarda bir link (veya debug arayüzünde kırmızı bir hata mesajı) göstererek sizi Firebase Console üzerinden otomatik oluşturmaya yönlendirecektir.
Proje, özellik öncelikli (feature-first) bir mimari izler:
lib/
├── core/ # Paylaşılan kodlar (servisler, widget'lar, araçlar, provider'lar)
├── features/ # Özellik modülleri (auth, home, community vb.)
│ ├── data/
│ ├── domain/
│ ├── presentation/ (views, widgets, controllers)
├── router/ # Uygulama yönlendirme yapılandırması
└── main.dart # Giriş noktası