Modern, ölçeklenebilir ve katmanlı mimariye sahip bir Expo React Native uygulaması. Google Books API üzerinden kitap arama, otomatik sayfalama, detay görüntüleme ve favorilere ekleme/çıkarma özellikleri sunar. Tüm hata mesajları Türkçe’dir.
- Kurulum
- Kullanım
- Özellikler
- Mimari ve Dizin Yapısı
- Teknik Detaylar
- Komutlar
- Notlar
- Ekran Görüntüleri
- Gerekli sürümler (Expo SDK 53 uyumlu):
- node >= 18, npm >= 9
- Expo Go (iOS/Android mağazalarından)
- Bağımlılıkları yükleyin:
cd qampus-books
npm install- Geliştirme sunucusunu başlatın (cache temiz önerilir):
npx expo start -c- Çalıştırma:
- iOS (Expo Go): QR ile açın veya
i - Android (Expo Go):
a - Web:
w
Paket sürümleri
package.jsoniçinde Expo SDK 53 ile uyumlu olacak şekilde sabitlenmiştir.
- Ana ekranda arama çubuğuna yazın; yazma bittikten ~2.5 sn sonra akıllı arama tetiklenir.
- Sonuç listesi sonuna yaklaşınca otomatik sayfalama devreye girer.
- Kart üzerine dokunarak kitap detayına gidin.
- Detay ekranının sağ üstündeki yıldız butonu ile favorilere ekleyin/çıkarın.
- Alt-sağdaki “arama” kısa yolu (FAB) ile her ekrandan arama sayfasına dönebilirsiniz.
- Favoriler ekranında eklediklerinizi görüntüleyin.
Favoriler AsyncStorage’da saklanır ve uygulama açılışında otomatik yüklenir.
- Akıllı arama: 2.5 sn debounce, yazma takibi, latest-only yanıt işleme, iptal edilebilir istekler
- Otomatik sayfalama:
FlatList+onEndReached(10’ar 10’ar, tekrar eden sonuçlar de-dupe) - Hata yönetimi: Ağ/zaman aşımı/HTTP için Türkçe, kullanıcı dostu mesajlar
- Favoriler: Context + Reducer, normalized state (
byId,allIds), kalıcı saklama (AsyncStorage) - Tasarım: Minimal–premium kartlar, okunabilir tipografi, iOS/Android uyumlu
- Erişilebilirlik: Temel
accessibilityLabel/Role, dokunma alanları ve odak hiyerarşisi
Katmanlı mimari: UI/screens/components ↔ hooks ↔ domain ↔ data(api&storage) ↔ state ↔ theme ↔ utils
src/
app/ # Navigation, AppProvider
components/
book/ # BookCard, BookCover, FavoriteToggle
common/ # Loading, EmptyState, ErrorState
data/
api/ # http (Axios), googleBooks client
storage/ # AsyncStorage wrapper (favorites)
domain/ # bookMapper, bookSchema
hooks/ # useBookSearch (debounce, sayfalama, iptal)
screens/
Search/
BookDetail/
Favorites/
state/
favorites/ # Context + Reducer + hook
theme/ # Renkler, boşluklar, tipografi, globalStyles
utils/ # debounce, format, image
- HTTP: Axios +
AbortController,TimeoutError/NetworkError/HttpError, exponential backoff retry - Google Books API:
volumesaraması (TR dil önceliği), detay genişletilebilir - useBookSearch:
- Debounce (2.5s) – yazma sırasında UI bloklanmaz
- SWR benzeri kısa süreli cache, latest-only yanıt işleme, iptal
- Otomatik sayfalama ve de-dupe (
mergeUniqueById)
- Favoriler: Normalized veri; persist/rehydrate; güvenli hata işleme
- Görseller: HTTPS’e yükseltme,
resizeMode="cover", yer tutucu - İkonlar: MaterialCommunityIcons (Expo Go uyumlu)
- Expo SDK: 53 (sürümler uyumlu). Sorunlarda:
npx expo doctor,npx expo start -c. - Hata mesajları Türkçe.
- Gereksiz yorumlar temizlenmiştir; yalnızca anlamlı kısa yorumlar kalan yapıda kodlanmıştır.
- UI/UX: floating arama çubuğu, tam genişlik kartlar, iOS/Android’de hizalı favori yıldızı.






