← Projeler

PetFinder — kayıp hayvan bildirim platformu

Django ile ilan yönetimi, fotoğraflı görülme bildirimi, kullanıcı hesapları, mesajlaşma ve CSV içe/dışa aktarma.

Rol
Geliştirme ekibi üyesi · iki kişilik proje
Kurum
Kocaeli Üniversitesi
Dönem
2025
Teknolojiler
Python · Django · SQLite · HTML · CSS · JavaScript
PetFinder ana sayfasında fotoğraf, son görülme bilgisi ve detay bağlantısıyla listelenen hayvan ilanları.

Problem

Kayıp bir hayvan için paylaşılan fotoğraf ancak doğru bilgiyle birlikte işe yarıyor: nerede ve ne zaman görüldü, kim haber verdi, sahibine nasıl ulaşılacak? PetFinder’da ilanı, fotoğraflı görülme bildirimini ve platform içi iletişimi aynı akışta topladık. Uygulamayı iki kişilik ekiple Django üzerinde geliştirdik.

Full-stack uygulama

Backend’de Django ORM, Forms ve kullanıcı sistemi; frontend’de Django Templates, sayfaya özel CSS ve JavaScript kullanılıyor. SQLite üzerinde ilanlar, kullanıcı profilleri, etiketler, görülme bildirimleri ve mesajlar tutuluyor.

Pet ile Tag arasında many-to-many, ilan ile bildirim arasında one-to-many, kullanıcı ile profil arasında one-to-one ilişkisi var. Bu model, bir ilana birden fazla etiket ve görülme bildirimi bağlamayı sağlıyor.

Fotoğraf, son görülme bilgisi ve ilan işlemleri aynı sayfada. İlanın sahibi kendi kaydını buradan yönetebiliyor.
İlanın detay ekranı Fotoğraf, son görülme bilgisi ve ilan işlemleri aynı sayfada. İlanın sahibi kendi kaydını buradan yönetebiliyor.

Kullanıcı akışları

Kullanıcı ilan ekleyebiliyor, kendi ilanını düzenleyip silebiliyor. Ad, tür ve yaşa göre arama yapılabiliyor. Görülme formunda konum, tarih, not, iletişim yöntemi ve fotoğraf alanları bulunuyor.

PetFinder'da konum, tarih, not ve fotoğraf alanları içeren görülme bildirimi formu
PetFinder'da konum, tarih, not ve fotoğraf alanları içeren görülme bildirimi formu

Hesap bölümünde kayıt, giriş/çıkış, profil fotoğrafı ve parola işlemleri var. Kullanıcılar kendi ilanlarını CSV olarak dışa aktarabiliyor veya CSV’den yeni ilanlar ekleyebiliyor. Özel admin ekranları, ilan ve bildirim yönetimini standart Django admin panelinin yanında sunuyor.

Ad, tür ve yaş alanları birlikte filtrelenerek ilgili ilanlara ulaşılabiliyor.
İlanlar arasında arama Ad, tür ve yaş alanları birlikte filtrelenerek ilgili ilanlara ulaşılabiliyor.

Mesajlaşma ve tasarım kararları

Mesajlar gönderici/alıcı ilişkisi, zaman damgası ve okundu bilgisiyle kaydediliyor. Tarayıcı yeni mesajları 5 saniyelik HTTP polling ile alıyor. Bu sürümde WebSocket kullanılmıyor.

Django’nun form ve view sınıfları kalıtımla özelleştirildi. Model, form, view ve template ayrımı arayüzle veri işlemlerini düzenli tutuyor. İlan düzenleme ve silmede kullanıcı sahipliği sorgu seviyesinde kontrol ediliyor.

CSV yükleme ekranı, birden fazla ilanı tek seferde sisteme almaya yarıyor; export ise kullanıcıya ait kayıtları dışarı veriyor.
Toplu veri aktarımı CSV yükleme ekranı, birden fazla ilanı tek seferde sisteme almaya yarıyor; export ise kullanıcıya ait kayıtları dışarı veriyor.

Sonuç ve geliştirme alanları

İlan CRUD, fotoğraflı bildirim, arama, hesap yönetimi, CSV aktarımı ve mesajlaşma tek web uygulamasında çalışacak şekilde geliştirildi. İlk sürümde otomatik test kapsamı bulunmuyor; admin etiket işlemlerinde ve mesaj endpoint’lerinde erişim kontrollerinin tutarlı hâle getirilmesi gerekiyor. Sahiplendirme için veri modeli mevcut olsa da tamamlanmış kullanıcı akışının parçası değil.