Kitap Takası — Kullanıcı Hikayeleri

Toplam 15 hikaye · 3 Epic · Öncelik & Kabul Kriterleri ile · 30 Mayıs 2026

Epic 1
🔐 Kimlik Doğrulama & Hesap Yönetimi
US-01 Yüksek Öncelik
Bir öğrenci olarak, platforma e-posta, telefon ve adres bilgilerimle hızlıca kayıt olabilmek istiyorum ki sistemde kendi kitaplığımı oluşturabileyim ve diğer kullanıcılarla takas yapabileyim.
Kabul Kriterleri
  • Kullanıcı adı, şifre, e-posta, telefon ve adres alanları zorunludur.
  • Kullanıcı adı sistemde zaten varsa "kullanıcı adı alınmış" hatası gösterilir.
  • Şifre bcrypt (salt round 12) ile hashlenerek saklanır; düz metin saklanmaz.
  • Kayıt başarılıysa kullanıcı otomatik olarak Ana Sayfa'ya yönlendirilir.
US-02 Yüksek Öncelik
Kayıtlı bir kullanıcı olarak, kullanıcı adı ve şifremle güvenli biçimde giriş yapabilmek istiyorum ki kişisel kitaplığıma ve takas isteklerime ulaşabileyim.
Kabul Kriterleri
  • Doğru kullanıcı adı + şifre ile giriş yapıldığında oturum açılır.
  • Yanlış kimlik bilgilerinde açıklayıcı hata mesajı gösterilir.
  • Giriş sonrasında kullanıcıya özgü içerik (userId bazlı) gösterilir.
  • Şifre karşılaştırması bcrypt.compare ile yapılır.
US-03 Orta Öncelik
Giriş yapmış bir kullanıcı olarak, oturumu güvenle kapatabilmek istiyorum ki başkası cihazımı kullandığında hesabıma erişilemesin.
Kabul Kriterleri
  • "Çıkış Yap" tıklandığında uygulama durumu sıfırlanır (loggedIn: false).
  • Çıkış sonrası kullanıcı Ana Sayfa'ya yönlendirilir.
  • Oturum kapatma sonrası korumalı sayfalara erişim engellenir.
Epic 2
📚 Kişisel Kitaplık Yönetimi
US-04 Yüksek Öncelik
Bir öğrenci olarak, dönem sonu elimde kalan ders kitaplarını ISBN numarasıyla platforma ekleyebilmek istiyorum ki başlık, yazar ve tür bilgilerini manuel girmek zorunda kalmadan kitabımı hızlıca listeleyebileyim.
Kabul Kriterleri
  • ISBN girildiğinde Google Books API'den başlık, yazar ve tür otomatik doldurulur.
  • Kitap veritabanında zaten varsa tekrar eklenmez (duplicate önlenir).
  • Ekleme sonrası "Kitaplarım" listesi anında güncellenir.
  • API erişilemezse hata mesajı gösterilir ve işlem iptal edilir.
US-05 Yüksek Öncelik
Bir kullanıcı olarak, ISBN'ini bilmediğim kitapları başlık, yazar ve durum bilgisiyle manuel olarak ekleyebilmek istiyorum ki eski veya baskısı nadir bulunan kitaplarımı da takas listeme koyabileyim.
Kabul Kriterleri
  • Başlık ve yazar alanları zorunludur; ISBN isteğe bağlıdır.
  • ISBN girilmezse sistem otomatik benzersiz bir tanımlayıcı üretir.
  • Kitap durumu (Sıfır Gibi / İyi / Orta) seçimi zorunludur.
  • Ekleme sonrası form sıfırlanır ve liste yenilenir.
US-06 Yüksek Öncelik
Bir kullanıcı olarak, kitaplığımdaki tüm kitapları başlık, yazar, durum ve ISBN bilgileriyle listeleyebilmek istiyorum ki hangi kitaplarımın takas için açık olduğunu hızlıca görebileyim.
Kabul Kriterleri
  • Sayfa açıldığında yalnızca giriş yapan kullanıcıya ait kitaplar gösterilir.
  • Her satırda başlık, yazar, ISBN ve durum rozeti yer alır.
  • Kitaplık boşsa "Henüz kitap eklenmedi" bilgi mesajı gösterilir.
US-07 Orta Öncelik
Bir kullanıcı olarak, kitaplığımdan istemediğim bir kitabı tek tıkla silebilmek istiyorum ki listem güncel kalsın ve diğer kullanıcılar artık mevcut olmayan kitapları görmesin.
Kabul Kriterleri
  • Sil butonu yalnızca o satırdaki kitabı kaldırır; diğerleri etkilenmez.
  • Silme işlemi geri alınamaz; onay diyaloğu gösterilir.
  • İşlem sonrası liste sunucudan yeniden çekilir.
Epic 3
🔄 Kitap Arama & Takas Süreci
US-08 Yüksek Öncelik
Bir öğrenci olarak, ihtiyacım olan ders kitabını başlığına göre aratıp toplulukta kimin listelediğini görebilmek istiyorum ki kitabı satın almak yerine takas yoluyla temin edebileyim.
Kabul Kriterleri
  • Arama kutusu regex destekli kısmi eşleşme yapar (büyük/küçük harf duyarsız).
  • Sonuçlarda kitabın başlık, yazar, durum ve sahibinin kullanıcı adı gösterilir.
  • Kullanıcı kendi listelediği kitapları sonuçlarda görmez.
  • Hiç sonuç yoksa "Eşleşen kitap bulunamadı" mesajı gösterilir.
US-09 Yüksek Öncelik
Bir kullanıcı olarak, beğendiğim bir kitap için takas talebi göndererek kitabın sahibine haber verebilmek istiyorum ki takas sürecini e-posta veya telefon aramadan bağımsız olarak platform üzerinden yönetilebilsin.
Kabul Kriterleri
  • "İste" butonuna basıldığında users_books tablosundaki requester alanı güncellenir.
  • Bir kitap için yalnızca bir talep açık olabilir.
  • Talep sonrası ilgili satırdaki buton devre dışı bırakılır veya durum etiketi değişir.
US-10 Yüksek Öncelik
Bir kitap sahibi olarak, kitabıma yapılan takas taleplerini "Gelen İstekler" ekranında görüp kabul veya reddedebilemk istiyorum ki kime vereceğimi kontrol edebileyim ve istemediğim talepleri reddedebiliyeyim.
Kabul Kriterleri
  • Gelen İstekler listesinde talep edenin kullanıcı adı ve e-postası gösterilir.
  • "Kabul Et" tıklandığında POST /api/acceptRequest çağrılır.
  • Kabul sonrasında ilgili talep "Gelen İstekler" listesinden kalkar.
US-11 Orta Öncelik
Bir kullanıcı olarak, gönderdiğim takas taleplerini "Giden İstekler" ekranında takip edebilmek istiyorum ki hangi kitaplar için beklediğimi ve talebimin kabul edilip edilmediğini görebileyim.
Kabul Kriterleri
  • Giden İstekler listesinde kitap adı, sahibinin adı ve e-postası yer alır.
  • Talep durumu (Bekleniyor / Kabul Edildi) rozet olarak gösterilir.
  • Kabul edilen taleplerde "Kargola" butonu aktif hale gelir.
US-12 Orta Öncelik
Bir kullanıcı olarak, talebim kabul edilen kitabı karşı tarafa gönderdiğimde kargo durumunu "Gönderildi" olarak işaretleyebilmek istiyorum ki takas sürecinin tamamlandığı her iki tarafça da görülebilsin.
Kabul Kriterleri
  • "Kargola" butonu yalnızca talebin kabul edilmesinin ardından aktif olur.
  • Onay diyaloğu gösterilir; işlem geri alınamaz olarak vurgulanır.
  • İşlem sonrası POST /api/shipped çağrılır ve kayıt güncellenir.
US-13 Orta Öncelik
Bir kullanıcı olarak, platforma giriş yapmadan önce uygulamanın nasıl çalıştığını Ana Sayfa'dan görebilmek istiyorum ki kayıt olmaya karar vermeden önce platformun değerini anlayabileyim.
Kabul Kriterleri
  • Misafir kullanıcılara landing ekranı ve Giriş / Kayıt Ol linkleri gösterilir.
  • Korumalı sayfalara (Kitaplarım, Arama, Takas) misafir erişimi engellenir.
  • Navigasyon çubuğu giriş durumuna göre farklı öğeler gösterir.
US-14 Düşük Öncelik
Bir kullanıcı olarak, var olmayan bir URL'e gittiğimde anlamlı bir "Sayfa Bulunamadı" ekranı görmek istiyorum ki uygulamanın çöktüğünü sanmayıp yanlış bir bağlantıya tıkladığımı anlayabileyim.
Kabul Kriterleri
  • Tanımsız her rotada NotFound bileşeni render edilir.
  • Ana sayfaya dönüş bağlantısı yer alır.
  • Sayfa başlığı "404 — Sayfa Bulunamadı" olarak güncellenir.
US-15 Düşük Öncelik
Bir geliştirici olarak, API uç noktalarının ve React bileşenlerinin otomatik birim testleriyle doğrulanmasını istiyorum ki yeni özellik eklendiğinde mevcut işlevlerin bozulmadığından emin olabileyim.
Kabul Kriterleri
  • Backend için Supertest ile en az 5 API uç noktası test edilir.
  • Frontend için @testing-library/react ile temel bileşen render testleri yazılır.
  • npm test komutu başarıyla tamamlanır; hata sayısı 0 olur.
📋 Kullanıcı Hikayeleri Özet Tablosu
ID Başlık Epic Öncelik Story Points İlgili Bileşen / Endpoint
US-01Platforma kayıt olmaEpic 1 – KimlikYüksek5Register.jsx · POST /api/register
US-02Güvenli giriş yapmaEpic 1 – KimlikYüksek3Login.jsx · POST /api/verifyUser
US-03Oturum kapatmaEpic 1 – KimlikOrta2Nav.jsx · logOut prop
US-04ISBN ile kitap eklemeEpic 2 – KitaplıkYüksek8MyPage.jsx · POST /api/addOldBook
US-05Manuel kitap eklemeEpic 2 – KitaplıkYüksek5MyPage.jsx · POST /api/addManualBook
US-06Kitaplığı listelemeEpic 2 – KitaplıkYüksek3MyPage.jsx · GET /api/getMyOldBookList
US-07Kitap silmeEpic 2 – KitaplıkOrta3MyBookRow.jsx · POST /api/deleteOldBook
US-08Başlığa göre kitap aramaEpic 3 – TakasYüksek5Search.jsx · POST /api/findOldBook
US-09Takas talebi göndermeEpic 3 – TakasYüksek5SearchBookRow.jsx · POST /api/requestBook
US-10Gelen istekleri yönetmeEpic 3 – TakasYüksek5Exchange.jsx · GET /api/getIncomingInfo
US-11Giden istekleri takip etmeEpic 3 – TakasOrta3Exchange.jsx · GET /api/getOutgoingInfo
US-12Kargo durumu bildirimiEpic 3 – TakasOrta3ExchangeRow.jsx · POST /api/shipped
US-13Misafir landing ekranıEpic 3 – TakasOrta2Root.jsx · Nav.jsx
US-14404 Sayfa BulunamadıEpic 3 – TakasDüşük1NotFound.jsx
US-15Otomatik birim testleriEpic 3 – TakasDüşük8Jest · Supertest · __tests__/
Toplam Story Points: 61 SP