Bu proje, Sakarya Üniversitesi Bilgisayar Mühendisliği Bölümü, BSM 447 - Mobil Uygulama Geliştirme dersi projesi olarak geliştirilmiştir.
Uygulama, kullanıcıların Pomodoro tekniği veya özel sürelerle odaklanma seansları yapmasını sağlar, arka plan takibi (AppState) ile dikkat dağınıklığını ölçer ve elde edilen verileri detaylı grafiklerle raporlar.
- ⏱ Özelleştirilebilir Sayaç: 15, 25, 45, 60 dakikalık hızlı seçim butonları ve manuel süre arttırma/azaltma (+1, +5 dk) özellikleri.
- 🚨 Dikkat Dağınıklığı Takibi: Uygulama
AppState APIkullanarak arka plan durumunu dinler. Kullanıcı sayaç çalışırken uygulamadan ayrılırsa (WhatsApp'a girmek, ana ekrana dönmek vb.), sayaç otomatik olarak duraklatılır ve "Dikkat Dağınıklığı" sayısı arttırılır. - 📊 Gelişmiş Raporlama:
react-native-chart-kitkullanılarak oluşturulan Dashboard:- Bar Chart: Son 7 günün günlük odaklanma süreleri.
- Pie Chart: Kategorilere göre odaklanma dağılımı.
- 💾 Veri Kalıcılığı (Persistence): Tamamlanan tüm seanslar
AsyncStoragekullanılarak cihaz hafızasında kalıcı olarak saklanır. - 🏷 Kategori Yönetimi: "Ders", "Kodlama", "Kitap", "Proje" ve "Spor" kategorileri ile seans takibi.
- 🌑 Dark Mode (Karanlık Tema): Göz yormayan, pil dostu ve modern, tam uyumlu karanlık tasarım.
- 📳 Haptik Geri Bildirim (Titreşim):
- Butonlara basıldığında fiziksel his veren kısa titreşimler.
- Uygulamadan çıkıldığında uyarıcı titreşim (İki kısa).
- Süre bittiğinde uzun bildirim titreşimi.
- 🔒 Akıllı Kontroller: Kategori seçilmeden sayacın başlatılmasını engelleyen ve butonu pasif hale getiren kullanıcı deneyimi iyileştirmesi.
- 🛠 Geliştirici Araçları: Raporlar ekranında test verisi üretmek ve verileri temizlemek için gizli geliştirici butonları.
| Teknoloji | Açıklama |
|---|---|
| Framework | React Native (Expo Router) |
| Dil | TypeScript |
| Veri Depolama | @react-native-async-storage/async-storage |
| Grafikler | react-native-chart-kit & react-native-svg |
| İkonlar | @expo/vector-icons (Ionicons) |
| Navigasyon | Expo Router (File-based routing) |
Kodlar temiz, modüler ve yeniden kullanılabilir bileşen mantığına göre düzenlenmiştir:
FocusTracker/
├── app/
│ ├── (tabs)/
│ │ ├── index.tsx # Ana Sayfa (Sayaç, AppState ve Kontroller)
│ │ ├── explore.tsx # Raporlar Ekranı (Grafikler ve İstatistikler)
│ │ └── _layout.tsx # Tab Bar Navigasyon Ayarları
├── src/
│ ├── utils/
│ └── storage.ts # Veritabanı İşlemleri (Save/Load/Clear)
│
└── assets/ # Görseller ve Fontlar
Projeyi bilgisayarınıza indirmek ve gerekli kütüphaneleri yüklemek için terminalde sırasıyla şu komutları uygulayın:
Önce projeyi bilgisayarınıza çekin:
git clone https://github.com/Egebo/FocusTracker.gitcd FocusTrackernpm installnpx expo startUygulamayı telefonunuzda veya emülatörde görmek için:
Android Telefon: "Expo Go" uygulamasını açın ve terminaldeki QR kodu taratın.
iPhone (iOS): Kamera uygulamasını açın ve QR kodu taratın.
Emülatör: Terminalde a (Android) veya i (iOS) tuşuna basarak sanal cihazda başlatın.