Mahalle İhtiyaç Panosu (Mikro Yardım Ağı) Projesi Rapor
1.Sudenaz Kobilay
220229041
2.Esma Zeynep Uysal
3. Hilal Nur Turan
4.Sevgi Yaren Özdemir
220229057
230229053
230229021
Özetçe— Bu proje, günümüz şehirleşen toplumlarında ve internetin yaygınlaşması, bireylerin coğrafi sınırlamalara
kaybolmaya yüz tutan komşuluk ve mahalle takılmadan hızlı ve kolay bir şekilde birbirleriyle bağlantı
dayanışması ruhunu dijital platforma taşıyarak "mikro kurabilmesine olanak tanımaktadır. İşte tam da bu noktada,
yardım" kavramını hayata geçirmeyi hedeflemektedir. "Mahalle İhtiyaç Panosu (Mikro Yardım Ağı)" projesi, bu sosyal
"Mahalle İhtiyaç Panosu" adı verilen bu web tabanlı boşluğu doldurmayı ve mahalle sakinleri arasında doğrudan,
pratik ve güvenilir bir yardımlaşma platformu oluşturmayı
uygulama, yaşlılara su getirme, evcil hayvanlara mama hedeflemektedir. Bu proje, sadece bir yazılım uygulaması
bırakma, küçük tamirat işlerinde destek olma gibi olmanın ötesinde, mahallelerdeki komşuluk ve yardımlaşma
günlük yaşamda sıkça karşılaşılan küçük çaplı yardım geleneğini dijital çağın gereklerine uygun bir şekilde yeniden
ihtiyaçları ile bu yardımları yapmaya gönüllü kişileri yorumlama ve canlandırma misyonunu üstlenmektedir.
bir araya getiren yenilikçi bir platform sunmaktadır. Kullanıcıların güvenli ve şeffaf bir ortamda yardım ilanları
Django web çatısı kullanılarak geliştirilen bu sistem, oluşturmasına, bu ilanlara gönüllülerin kolayca yanıt vermesine
kullanıcıların güvenli bir ortamda yardım ilanları olanak tanıyarak, toplumsal dayanışmayı somut bir şekilde
oluşturmasına, bu ilanlara yanıt vermesine ve güçlendirmeyi amaçlamaktadır.Projenin temel gerekçeleri,
toplumsal dayanışmayı güçlendirmesine olanak tanır. yukarıda bahsedilen sosyal ihtiyaçlara pratik çözümler sunmanın
Proje, sadece bir yazılım uygulaması olmanın ötesinde, yanı sıra, aşağıda sıralanan ana amaçları da kapsamaktadır:
mahallelerin sosyal dokusunu canlandırmayı ve
• Toplumsal Dayanışmayı ve Komşuluk İlişkilerini
bireyler arası etkileşimi artırmayı amaçlamaktadır.
Güçlendirmek: Projenin en temel hedeflerinden biri,
Sistem, kullanıcı dostu arayüzü, gelişmiş kimlik
mahalle sakinlerinin birbirlerine kolayca ulaşmasını
doğrulama ve yetkilendirme mekanizmaları, esnek veri
sağlayarak, günümüzde zayıflayan komşuluk ilişkilerini
yönetimi ve kapsamlı arama özellikleriyle donatılmıştır,
yeniden canlandırmak ve yerel düzeyde bir dayanışma
böylece her yaştan ve kesimden mahalle sakininin
kültürünü teşvik etmektir. Bu platform, insanların sanal
kolayca kullanabileceği bir yapı sunulmuştur.
ortamda da olsa somut ihtiyaçlar üzerinden bir araya
gelmesini sağlayacak bir köprü görevi görecektir.
I. GİRİŞ (HEADING 1)
Hızla değişen ve globalleşen dünyada, bireylerin yaşam tarzları
ve toplumsal etkileşimleri de büyük bir dönüşüm geçirmektedir.
Özellikle büyük şehirlerdeki yoğun kentleşme, nüfus hareketliliği
ve dijital iletişim araçlarının yaygınlaşması, bir zamanlar
mahalleleri bir arada tutan geleneksel komşuluk ilişkilerinin
zayıflamasına neden olmuştur. Eskiden komşuların birbirine
kolayca ulaşıp destek olduğu, küçük yardımlaşmaların günlük
hayatın doğal bir parçası olduğu bir ortam yerine, günümüzde
bireylerin kendi mahallelerinde bile birbirlerini tanımakta
zorlandığı, yalnızlaşma eğilimlerinin arttığı bir tablo ortaya
çıkmaktadır. Bu durum, günlük hayatın içinde ortaya çıkan pek
çok küçük ama önemli ihtiyacın giderilmesinde ciddi
aksaklıklara yol açmaktadır. Örneğin, evden çıkmakta zorlanan
yaşlı bir bireyin market alışverişi, geçici olarak şehir dışına çıkan
bir ailenin evdeki bitkilerini sulama veya evcil hayvanlarını
besleme ihtiyacı, küçük bir elektrik arızası için komşudan teknik
destek alma veya acil bir durumda ilaç getirtme gibi durumlar,
çözüm bekleyen ve çoğu zaman bireysel çabalarla sınırlı kalan
sosyal boşlukları işaret etmektedir. Bu tür "mikro yardım"
ihtiyaçları, genellikle resmi yardım kuruluşlarının veya büyük
çaplı sivil toplum örgütlerinin kapsamı dışında kalmakta, çoğu
zaman fark edilmemekte veya organize edilememektedir. Bu,
hem ihtiyaç sahipleri için hayati bir eksiklik olmakta hem de
yardım etme potansiyeli olan bireylerin bu potansiyeli somut bir
platformda kullanamamasına neden olmaktadır.Bu bağlamda,
modern teknolojinin sunduğu imkanlardan faydalanarak, mahalle
bazında etkin ve hızlı bir yardımlaşma ağı kurma fikri, toplumsal
dayanışmayı yeniden canlandırma ve sosyal sermayeyi artırma
potansiyeliyle büyük bir önem kazanmaktadır. Akıllı telefonların
•
Mikro İhtiyaçlara Hızlı ve Erişilebilir Çözümler
Sunmak: Günlük hayattaki küçük çaplı, anlık ve kişisel
yardım taleplerinin (örneğin, yaşlı birinin pazar
alışverişini yapma, tatile giden komşunun çiçeklerini
sulama, evcil hayvanına mama bırakma, küçük bir
bilgisayar sorununda yardım alma vb.) platform
üzerinden kolayca ilan edilmesini ve bu ilanlara
gönüllüler tarafından hızlıca yanıtlanmasını sağlamak.
Bu sayede, ihtiyaç sahipleri anında ve güvenilir destek
bulurken, gönüllüler de topluma aktif bir şekilde katkı
sağlamanın ve faydalı olmanın manevi tatminini
yaşayacaktır.
•
Kullanıcı Dostu ve Kapsayıcı Bir Platform
Oluşturmak: Uygulamanın her yaştan ve farklı
teknoloji seviyelerinden kullanıcının rahatlıkla
kullanabileceği, basit, sezgisel ve erişilebilir bir web
arayüzüne sahip olması hedeflenmektedir. Arayüzün
karmaşıklıktan uzak, net ve anlaşılır olması, dijital
okuryazarlığı daha az olan veya ileri yaş grubundaki
bireylerin bile sisteme kolayca adapte olabilmesini ve
platformdan en verimli şekilde faydalanabilmesini
sağlamayı amaçlamaktadır.
•
Güvenli ve Şeffaf Bir Etkileşim Ortamı Yaratmak:
Kullanıcılar arasında güvenin tesis edilmesi, bu tür bir
yardımlaşma platformunun başarısı için hayati öneme
sahiptir. Gelişmiş kimlik doğrulama (authentication) ve
yetkilendirme (authorization) mekanizmaları ile
kullanıcı verilerinin gizliliği ve güvenliği en üst
düzeyde sağlanırken, ilan süreçlerinin şeffaf bir şekilde
yürütülmesi ve kullanıcıların birbirlerini
değerlendirebilmesi gibi özellikler, olası dolandırıcılık
veya kötüye kullanım risklerini minimize edecektir.
•
Modern Web Geliştirme Teknolojilerini Etkin
Kullanmak: Proje, güncel ve güçlü bir Python tabanlı
web çatısı olan Django kullanılarak geliştirilmektedir.
Django'nun model-view-template (MVT) mimarisi,
nesne ilişkisel eşleme (ORM) yetenekleri, yerleşik
admin paneli ve çeşitli güvenlik özellikleri (CSRF
koruması, XSS koruması vb.) sayesinde projenin
sağlam, ölçeklenebilir, modüler ve bakımı kolay bir
yapıda olması sağlanmıştır. Ön yüz tasarımı ise HTML5
ve saf CSS3 kullanımıyla, Bootstrap gibi harici
kütüphanelerden bağımsız olarak özgün, estetik ve
duyarlı bir kullanıcı arayüzü sunmaktadır. Bu yaklaşım,
sadece işlevselliği değil, aynı zamanda teknik yeterliliği
ve projenin mimari kalitesini de ön plana çıkarmaktadır.
İs_completed
BooleanField
İlanın tamamlanma durumu
Category
ManyToMany
Field
İlan kategorileri
Şekil 1. HelpRequest Modeli Alanları
ALAN ADI
VERİ TİPİ
AÇIKLAMA
Username
CharField
Benzersiz kullanıcı adı
Email
EmalField
Kullanıcının e-posta adresi
First_name
CharField
Kullanıcının adı
Last_name
CharField
Kullanıcının soyadı
İs_volunteer
BooleanField
Date_joined
DateTimeField
Last_login
DateTimeField
Kullanıcının gönüllü olup
olmadığını durumu
Kullanıcının sisteme kayıt
olma tarihi
Kullanıcının son giriş
yapma tarihi
II. DEĞERLENDİRME KRİTERLERİ VE UYGULAMA
Şekil 2. User Modeli Alanları
2.1 Özgün Değer
Projemiz olan "Mahalle İhtiyaç Panosu (Mikro Yardım Ağı)",
günlük yaşamda sıkça karşılaşılan, ancak çoğu zaman göz ardı
edilen "mikro yardım" ihtiyacına yenilikçi bir çözüm
sunmaktadır. Büyük ölçekli yardım platformlarından farklı
olarak, bu sistem mahalle bazında komşuluk ilişkilerini
güçlendirmeye odaklanarak, bireylerin küçük ölçekli, anlık
yardımlaşma ihtiyaçlarını pratik bir şekilde çözmeyi
hedeflemektedir. Bu özgün fikir, özellikle yaşlılar, engelliler
veya belirli durumlarda dışarı çıkamayan bireyler için büyük bir
kolaylık sağlamakta, aynı zamanda mahalledeki gönüllüleri aktif
bir şekilde yardımlaşmaya teşvik etmektedir. Proje, sadece bir
yazılım uygulaması olmanın ötesinde, toplumsal dayanışma
bilincini artıran bir sosyal etki yaratmayı amaçlamaktadır.
2.2 Ana Veri Modeli
Projemiz, Django'nun güçlü ORM (Object-Relational Mapping)
yapısını kullanarak, uygulamanın temel ihtiyaçlarını karşılayacak
şekilde tasarlanmış en az üç ana veri modeline (tablosuna)
sahiptir: HelpRequest (Yardım İlanları), User (Kullanıcılar) ve
Category (Kategoriler). Her bir model, projenin işlevselliği için
kritik öneme sahip en az beş alandan oluşmaktadır. Örneğin,
HelpRequest modeli, bir yardım talebinin konusu, açıklaması,
yayınlanma tarihi, son teslim tarihi ve talepte bulunan kullanıcı
gibi bilgileri tutarken, User modeli temel kullanıcı bilgilerini,
Category modeli ise yardım ilanlarının sınıflandırılması için
kullanılan kategorileri barındırmaktadır. Tüm bu veriler,
geliştirme sürecinde yerel bir SQLite veri tabanında güvenli bir
şekilde saklanmaktadır.
ALAN ADI
VERİ TİPİ
AÇIKLAMA
Title
CharField
İlanın kısa başlığı
Description
TextField
İlanın detaylı açıklaması
Date_posted
DateTimeField
İlan yayın tarihi
Deadline
DateTimeField
Son teslim tarihi
Requester
ForeignKey
İlanı oluşturan kullanıcı
Alan Adı
Veri Tipi
Açıklama
Name
CharField
Kategori adı
Slug
SlugField
Description
TextField
İcon
CharField
URL dostu
kategori adı
Kategorinin
Açıklaması
Kategori için ikon
İs_active
BooleanField
Kategorinin aktiflik
durumu
Şekil 3. Category Modeli Alanları
2.3 İlişkisel Veri Modeli
Uygulamamızın veri modelleri arasında, gerçek dünya
senaryolarını yansıtan güçlü ilişkisel bağlar kurulmuştur.
Özellikle Many-to-one ve Many-to-Many ilişkiler, Django'nun
ForeignKey ve ManyToManyField yapıları aracılığıyla titizlikle
tanımlanmıştır. Örneğin, her bir HelpRequest (yardım ilanı), tek
bir User (yardım talep eden kullanıcı) tarafından oluşturulur ve
bu, HelpRequest modeli içindeki ForeignKey ile sağlanır.
Ayrıca, bir HelpRequest birden fazla Category ile
ilişkilendirilebilir veya bir Category altında birden fazla
HelpRequest bulunabilir; bu da ManyToManyField ile yönetilir.
Bu ilişkiler, uygulamanın veri bütünlüğünü sağlamanın yanı sıra,
karmaşık sorgulamalara ve dinamik veri filtrelemelerine olanak
tanıyarak uygulamanın esnekliğini ve performansını
artırmaktadır.
ve başarılı bir şekilde giriş yapmış kullanıcılar erişebilmektedir.
Django'nun yerleşik kimlik doğrulama mekanizmaları
kullanılarak, kullanıcılara özelleştirilmiş kayıt olma (register),
giriş yapma (login), çıkış yapma (logout) ve şifre sıfırlama (reset
password) işlemleri için özel formlar ve sayfalar sunulmuştur.
Bu işlemler, Django Admin arayüzünden bağımsız olarak,
uygulamanın kendi özelleştirilmiş arayüzü üzerinden sorunsuz
bir şekilde gerçekleştirilmektedir.
2.7 Yetkilendirme (Authorization)
Şekil 5.Mahalle İhtiyaç Panosu Uygulaması Varlık-İlişki
Diyagramı (ERD)
2.4 CRUD İşlemleri İçin Sayfalar
Django'nun admin arayüzünün sağladığı temel CRUD (Create,
Read, Update, Delete) yeteneklerinin ötesinde, projemizde ana
veri modelimiz olan HelpRequest (Yardım İlanları) üzerinde her
bir CRUD işlemi için özel olarak tasarlanmış ayrı web sayfaları
bulunmaktadır. Bu yaklaşım, kullanıcı deneyimini iyileştirmeyi
ve admin panelinden bağımsız, daha kullanıcı dostu bir arayüz
sunmayı amaçlamaktadır. Kullanıcılar, "Yardım İlanı Oluştur"
sayfası aracılığıyla yeni ilanlar ekleyebilir, "Tüm İlanlar"
sayfasında mevcut ilanları listeleyebilir ve detaylarını
görüntüleyebilir, "İlanı Düzenle" sayfasından kendi ilanlarını
güncelleyebilir ve "İlanı Sil" onay sayfasıyla gereksiz ilanlarını
kaldırabilirler. Bu sayfalar, kullanıcının doğrudan uygulama
arayüzünden tüm temel veri yönetimi işlemlerini
gerçekleştirmesine olanak tanımaktadır.
2.5 Şablon Kullanımı
Uygulamamızın dinamik içerikli tüm sayfalarında (ilan listeleme,
ilan detayları, formlar vb.), Django'nun güçlü şablon dilinin
değişken, etiket ve filtre özellikleri etkin bir şekilde
kullanılmıştır. Bu sayede, veritabanından çekilen dinamik veriler,
HTML sayfaları içerisinde sorunsuz bir şekilde gösterilebilmekte
ve kullanıcı etkileşimleri sağlanmaktadır. Örneğin, {{
help_request.title }} gibi değişkenler ile ilan başlıkları doğrudan
sayfaya yansıtılırken, {% for help_request in help_requests %}
gibi etiketler ile ilan listeleri dinamik olarak oluşturulmuştur.
Ayrıca, {{ help_request.date_posted|date:"d M Y" }} gibi
filtreler kullanılarak tarih formatlama gibi görsel düzenlemeler
yapılmıştır. Bu şablon kullanımı, hem kod tekrarını azaltmakta
hem de sayfaların daha esnek ve bakımı kolay olmasını
sağlamaktadır.
2.6 Kimlik Doğrulama (Authentication)
Uygulamamızda, kullanıcı deneyimini zenginleştirmek ve veri
güvenliğini artırmak amacıyla Django'nun yetkilendirme
(authorization) sistemleri kullanılarak farklı kullanıcı tipleri
tanımlanmıştır. Django admin kullanıcısı dışında, iki ana
kullanıcı tipi mevcuttur: "Yardım İsteyen" ve "Gönüllü". Bu
kullanıcı tipleri, farklı yetki seviyelerine sahiptir. Örneğin,
sadece "Yardım İsteyen" rolündeki kullanıcılar yeni yardım
ilanları oluşturma ve kendi ilanlarını düzenleme/silme yetkisine
sahipken, "Gönüllü" rolündeki kullanıcılar mevcut tüm yardım
ilanlarını görüntüleyebilir ve bunlara yanıt verme seçeneklerini
görebilirler. Bu yetki farklılıkları, uygulamanın arayüzünde
butonların görünürlüğü veya belirli sayfalara erişim kısıtlamaları
aracılığıyla açıkça gösterilmektedir. Bu sayede, her kullanıcı
kendi rolüne uygun işlevselliği deneyimlemektedir.
2.8 Arama
"Mahalle İhtiyaç Panosu" uygulamasında, kullanıcıların binlerce
ilan arasından aradıklarını kolayca bulabilmeleri için gelişmiş bir
arama özelliği entegre edilmiştir. Uygulamanın "ana verileri"
olan yardım ilanları (HelpRequest modeli) üzerinde arama
yapılabilen özel bir arama sayfası geliştirilmiştir. Bu arama
sayfasında, kullanıcılara en az üç farklı alana göre (örneğin, ilan
konusu, yayınlanma tarihi ve kategori) filtreleme yapma imkanı
sunulmaktadır. Bu arama işlevi, Django Admin arayüzünden
bağımsız olarak, tamamen uygulama arayüzünde ve herhangi bir
harici eklenti kullanmaksızın özel olarak kodlanmıştır.
Kullanıcılar, belirledikleri kriterlere göre ilanları filtreleyerek
arama sonuçlarını hızlı ve verimli bir şekilde görüntüleyebilirler.
2.9 İçeri/Dışarı Veri Aktarma (Import/Export)
Uygulamamızda kullanılan temel veri modeli olan HelpRequest
(Yardım İlanları) verilerinin toplu olarak içeri ve dışarı
aktarılabilmesi için özel bir işlevsellik geliştirilmiştir. Bu özellik,
verilerin yedeklenmesi, başka sistemlere taşınması veya toplu
veri girişi gibi senaryolarda büyük kolaylık sağlamaktadır. Veri
aktarımı, yaygın olarak kullanılan ve okunabilir bir format olan
CSV (Comma Separated Values) formatında
gerçekleştirilmektedir. Bu işlevsellik, Django Admin
arayüzünden bağımsız olarak, uygulamanın kendi özelleştirilmiş
arayüzü üzerinden sunulmakta ve herhangi bir üçüncü taraf
eklentiye bağımlı olmadan saf Django koduyla implemente
edilmiştir. Kullanıcılar, tek bir tıklama ile tüm ilan verilerini
dışarı aktarabilir veya bir CSV dosyası yükleyerek toplu ilan
girişi yapabilirler.
"Mahalle İhtiyaç Panosu" uygulamasının güvenliğini sağlamak
ve kullanıcı verilerinin gizliliğini korumak amacıyla kapsamlı bir 2.10 Admin Arayüzü
kimlik doğrulama sistemi entegre edilmiştir. Uygulamanın belirli
bölümlerine veya tüm işlevselliğine sadece sistemde kayıtlı olan Django'nun sağladığı güçlü ve kullanımı kolay admin arayüzü,
"Mahalle İhtiyaç Panosu" projemizin veri yönetimini
kolaylaştırmak amacıyla etkin bir şekilde kullanılmıştır.
Uygulamamızın tüm temel veri modelleri (HelpRequest, User,
Category), Django admin paneline kaydedilmiş ve tam CRUD
(Create, Read, Update, Delete) desteği ile yönetilebilmektedir.
Yöneticiler, bu arayüz üzerinden yeni ilanlar ekleyebilir, mevcut
ilanları detaylı bir şekilde görüntüleyebilir, düzenleyebilir ve
silebilirler. Aynı şekilde kullanıcı hesapları ve kategori tanımları
da admin paneli üzerinden rahatlıkla yönetilebilmektedir. Bu
sayede, uygulamanın arka plan veri yönetimi süreçleri merkezi
ve güvenli bir platform üzerinden gerçekleştirilmektedir.
2.11 HTML ve CSS Gereksinimleri
"Mahalle İhtiyaç Panosu" uygulamasının ön yüz tasarımı ve
kullanıcı deneyimi, HTML5 ve CSS3 standartlarına titizlikle
uyularak gerçekleştirilmiştir. Projede kullanılan tüm HTML
sayfaları, bir HTML5 doğrulayıcı (validator) aracılığıyla test
edilmiş ve HTML5 uyumluluğu sağlanmıştır. Anlamsal ve
yapısal düzen için <h1|>, <h2> ve <h3> etiketleri en az üç farklı
sayfada (örneğin ana sayfa, ilan detay sayfası, profil sayfası)
anlamlı ve tasarım kalitesini bozmayacak şekilde kullanılmıştır.
Şekil 4 Akış Diyagramı
Liste yapıları için hem sıralı (<ol>) hem de sırasız (<ul>)
listeler, en az üç farklı yerde (örneğin kategori listesi, gönüllü
III. MATERYAL VE YÖNTEM
listesi, duyurular) kullanılmıştır. Linkler (<a> etiketi) hem bağıl
(uygulama içi sayfalara yönlendirme) hem de mutlak (harici web
3.1 Geliştirme Ortamı ve Araçlar
sitelerine yönlendirme) adres şeklinde çeşitli sayfalarda yer
almaktadır. Görsel zenginlik katmak için en az beş farklı sayfada
• Programlama Dili: Python 3.9 veya üzeri versiyonları
<img> etiketi farklı ve anlamlı resimlerle kullanılmıştır.
kullanılmıştır. Python'ın geniş kütüphane desteği, temiz
Verilerin düzenli gösterimi için <table>, <tr> ve <td>
sözdizimi ve Django ile mükemmel entegrasyonu,
etiketleri en az iki farklı sayfada (örneğin ilanlar tablosu,
projenin backend geliştirme süreçlerinde ana dil olarak
kullanıcı listesi) kullanılmıştır. Formlar, en az iki farklı yerde
seçilmesini sağlamıştır. Özellikle, karmaşık veri
(ilan ekleme formu, giriş formu) kullanılmış ve toplamda metin
manipülasyonu ve iş mantığı uygulamalarında Python'ın
kutusu, şifre, gönder butonu, radyo butonu, onay kutusu gibi en
sağladığı kolaylıklar önemli bir avantaj olmuştur.
az beş farklı giriş tipi barındırmaktadır. Sayfa düzeni ve görsel
gruplamalar için en az 10 farklı yerde <div> etiketi kullanılmış
• Web Çatısı: Django 4.x versiyonu tercih edilmiştir.
ve bu div alanlarının görselliği, dışsal bir CSS dosyasında
Django'nun "pil dahildir" (batteries included) felsefesi,
tanımlanan kurallarla titizlikle ayarlanmıştır. Bu dışsal CSS
projenin hızlı geliştirilmesi için gerekli olan güçlü ORM
dosyası, color, background-color, font-family, margin,
(Object-Relational Mapping), yerleşik admin paneli,
padding, border, display, flex-direction, justifykullanıcı kimlik doğrulama modülü ve çeşitli güvenlik
content, align-items, text-align, box-shadow,
özelliklerini (CSRF koruması, XSS koruması vb.)
border-radius, transition gibi en az 15 farklı CSS
standart olarak sunmuştur. Bu sayede, temel altyapı
özelliğini içermektedir. Web sitesinin genel görsel tasarımına
kurulumu yerine projenin özgün işlevselliğine
özen gösterilmiş, renk paleti, yazı tipleri ve boşluk düzenlemeleri
odaklanma imkanı bulunmuştur.
ile profesyonel ve kullanıcı dostu bir görünüm sağlanmıştır.
Tasarımda Bootstrap gibi hazır çerçeveler yerine özgün CSS
• Veri Tabanı: Geliştirme aşamasında ve yerel testlerde
kuralları kullanılarak projenin HTML ve CSS yetkinliği
SQLite3 veri tabanı kullanılmıştır. SQLite'ın hafif
vurgulanmıştır.
yapısı, kolay kurulumu ve sunucusuz çalışabilme
özelliği, özellikle küçük ölçekli projeler ve başlangıç
2.12 Uygulama Akış Diyagramı
aşamaları için ideal bir seçim olmuştur. Django'nun
ORM'si sayesinde, veri tabanı işlemleri doğrudan
"Bu bölümde, 'Mahalle İhtiyaç Panosu' web uygulamasının ana
Python kodları üzerinden yönetilmiş, SQL bilgisine
kullanıcı etkileşim akışları ve iş süreçleri detaylı bir şekilde
olan bağımlılık minimize edilmiştir.
sunulmaktadır. Şekil 4'te görselleştirilen akış diyagramı,
kullanıcının sisteme ilk erişiminden itibaren gerçekleştirdiği
kayıt/giriş süreçlerinden başlayarak, temel işlevsellik olan
• Ön Yüz Teknolojileri: Kullanıcı arayüzü, en güncel
yardım ilanı oluşturma, mevcut talepleri listeleme ve bu ilanlara
standartlar olan HTML5 ve CSS3'e tam uyumlu olarak
yanıt verme adımlarını sistematik bir biçimde tanımlamaktadır.
tasarlanmıştır. Bu seçim, uygulamanın modern web
Diyagram aynı zamanda, kimlik doğrulama gereksinimleri
tarayıcılarında sorunsuz çalışmasını ve gelecekteki
geliştirmelere açık olmasını sağlamıştır. Saf CSS
doğrultusunda, giriş yapmamış kullanıcılar için uygulanan erişim
kısıtlamalarını da açıkça ortaya koymaktadır.
kullanılarak, Bootstrap veya Tailwind CSS gibi harici
CSS çerçevelerine bağımlılık olmadan tamamen özgün
ve markaya özel bir tasarım dili oluşturulmuştur. Bu
yaklaşım, CSS bilgilerinin pekiştirilmesine ve projeye
sanatsal bir dokunuş katılmasına olanak tanımıştır.
•
•
Versiyon Kontrol Sistemi: Proje kodları, ekip içinde
işbirliğini kolaylaştırmak, kod versiyonlarını takip
etmek ve olası hatalarda geri dönebilmek amacıyla Git
kullanılarak yönetilmiştir. Projenin ana deposu olarak
GitHub tercih edilmiş, bu sayede paralel geliştirme, kod
birleştirme ve hata takibi süreçleri düzenli ve şeffaf bir
şekilde yürütülmüştür. Her bir özellik veya hata
düzeltmesi ayrı bir dalda geliştirilerek ana kod tabanının
istikrarı korunmuştur.
Geliştirme Ortamı (IDE): PyCharm Community
Edition ve Visual Studio Code gibi popüler ve güçlü
entegre geliştirme ortamları (IDE) kullanılarak kod
yazma, hata ayıklama, kod tamamlama ve test süreçleri
büyük ölçüde kolaylaştırılmıştır. Bu IDE'ler, Python ve
Django geliştirme için zengin özellikler sunarak
geliştirme verimliliğini artırmıştır.
•
3.3 Uygulama Geliştirme Süreci
Proje geliştirme süreci, çevik metodolojilere yakın bir
yaklaşımla, yinelemeli ve aşamalı olarak ilerlemiştir. Bu süreç,
aşağıda belirtilen temel adımları içermektedir:
•
3.2 Yazılım Mimarisi
Uygulama, Django'nun önerdiği ve web uygulamaları için
yaygın olarak kabul görmüş olan Model-View-Template (MVT)
mimarisine uygun olarak geliştirilmiştir. Bu mimari,
uygulamanın farklı bileşenlerinin mantıksal olarak ayrışmasını
sağlayarak kodun modülerliğini, okunabilirliğini ve gelecekteki
bakımını kolaylaştırmıştır:
•
•
•
•
Modeller (Models): Uygulamanın veri tabanı şemasını
ve iş mantığının veriyle ilgili kısmını temsil eden
Python sınıflarıdır. help_request_app/models.py
içerisinde tanımlanan HelpRequest, User ve
Category modelleri, Django ORM aracılığıyla SQLite
veri tabanıyla etkileşim kurar. Bu katman, veri
tanımlama, doğrulama, saklama ve erişiminden
sorumludur. Örneğin, HelpRequest modelindeki
ForeignKey alanları, bir yardım isteğinin hangi
kullanıcıya ait olduğunu ve hangi kategoriye dahil
olduğunu belirler.
Görünümler (Views): Kullanıcıdan gelen HTTP
isteklerini işleyen ve modelden gelen verileri şablonlara
aktararak kullanıcıya sunulacak yanıtı oluşturan Python
fonksiyonları veya sınıflarıdır.
help_request_app/views.py içerisinde yer alan
view'lar, ilan oluşturma, listeleme, güncelleme, silme,
kullanıcı kayıt/giriş, arama ve veri aktarma gibi tüm iş
mantığını barındırır. Bu katman, kullanıcı isteklerini
yorumlar ve uygun verileri hazırlar.
Şablonlar (Templates): Kullanıcı arayüzünü (UI)
oluşturan HTML dosyalarıdır.
help_request_app/templates/ dizini altında
bulunan bu dosyalar, dinamik içeriklerin Django şablon
dili kullanılarak bu dosyalara enjekte edildiği yerdir.
Şablonlar, verilerin kullanıcıya estetik ve düzenli bir
şekilde sunulduğu görsel katmandır. HTML yapısı ve
CSS kuralları bu katmanda belirlenir.
URL Yönlendirmeleri (URLs): Gelen HTTP
isteklerini belirli görünümlere yönlendiren URL
kalıplarıdır. project_root/urls.py ve
help_request_app/urls.py dosyaları,
uygulamanın rotalama yapısını tanımlar ve gelen
isteklerin doğru view'lara ulaşmasını sağlar. Bu sayede,
her bir işlevsellik için temiz ve anlamlı URL'ler
oluşturulmuştur.
Statik Dosyalar: Uygulamanın görsel tasarımı için
kullanılan CSS dosyaları, etkileşimli özellikler için
kullanılan JavaScript dosyaları ve çeşitli görseller gibi
sabit içeriklerdir. Bu dosyalar
help_request_app/static/ dizini altında
düzenlenmiş ve Django'nun statik dosya yönetim
sistemi aracılığıyla sunulmuştur.
•
•
•
•
Gereksinim Analizi ve Detaylı Tasarım: Projenin
başlangıcında, "Mahalle İhtiyaç Panosu" fikrinin temel
işlevleri, hedef kullanıcı kitlesi (yardım isteyenler,
gönüllüler) ve beklentileri detaylı olarak analiz
edilmiştir. Bu analizler sonucunda, veri tabanı şeması,
kullanıcı arayüzü akışları (wireframeler ve mockuplar),
ve ana özelliklerin (CRUD, Authentication,
Authorization vb.) nasıl implemente edileceği
konusunda detaylı bir tasarım planı oluşturulmuştur.
Veritabanı ve Model Oluşturma: Tasarım planına
uygun olarak, Django'nun models.py dosyası
içerisinde HelpRequest, User ve Category
modelleri, gerekli alanlar ve ilişkiler (ForeignKey,
ManyToManyField) tanımlanmıştır.
makemigrations ve migrate komutları ile
veritabanı şeması oluşturulmuştur. Bu adım,
uygulamanın veri omurgasını oluşturmuştur.
URL ve View Oluşturma: Her bir kullanıcı etkileşimi
ve işlevsellik için (/ilanlar, /ilan-ekle, /giris,
/profil vb.) ilgili URL yönlendirmeleri (urls.py)
ve bu URL'lere yanıt verecek Django view'ları
(views.py) geliştirilmiştir. Sınıf tabanlı view'lar
(Class-Based Views) kullanılarak kod tekrarı azaltılmış
ve daha modüler bir yapı elde edilmiştir. Örneğin, ilan
ekleme ve güncelleme için CreateView ve
UpdateView gibi genel view'lar kullanılmıştır.
Şablon Geliştirme ve Ön Yüz Tasarımı: Kullanıcı
arayüzünü oluşturan HTML şablonları (.html
dosyaları) tasarlanmış ve Django şablon dilinin
değişken, etiket ve filtre özellikleri kullanılarak dinamik
içeriklerle doldurulmuştur. Saf CSS (.css dosyaları)
kullanılarak, responsive ve estetik bir tasarım dili
oluşturulmuştur. HTML5 ve CSS3 standartlarına
uygunluk, tarayıcılar arası uyumluluk ve kullanıcı
deneyimi ön planda tutulmuştur.
Kimlik Doğrulama ve Yetkilendirme Entegrasyonu:
Django'nun yerleşik auth modülü kullanılarak kullanıcı
kayıt, giriş, çıkış ve şifre sıfırlama işlevleri güvenli bir
şekilde entegre edilmiştir. Kullanıcı rolleri (Yardım
İsteyen, Gönüllü) tanımlanarak, bu rollere özgü
yetkilendirme kuralları (@login_required,
@permission_required, mixins vb.) view'lara
uygulanmış, böylece kullanıcıların sadece yetkili
oldukları işlemleri gerçekleştirmeleri sağlanmıştır.
•
•
•
Arama ve Veri Aktarma Fonksiyonlarının
Geliştirilmesi: Ana veri modeli üzerinde kullanıcıların
ilanları kolayca bulabilmesi için çok kriterli (konu,
kategori, tarih gibi) arama işlevselliği geliştirilmiştir.
Ayrıca, ilan verilerinin toplu olarak CSV formatında
içeri/dışarı aktarılması için özel view'lar ve formlar
oluşturulmuştur. Bu işlevler, harici bir kütüphane
kullanılmadan saf Django ve Python kodlarıyla
implemente edilmiştir.
Test ve Hata Ayıklama: Geliştirme sürecinin her
aşamasında, yazılan kodların doğru çalıştığından emin
olmak için düzenli olarak testler yapılmıştır. Django'nun
TestCase sınıfı kullanılarak birim testleri (unit tests)
yazılmış ve uygulamanın çeşitli senaryolarda doğru
tepki verdiğini doğrulamak için entegrasyon testleri
gerçekleştirilmiştir. Bulunan hatalar hızlıca tespit edilip
düzeltilmiştir.
Dokümantasyon ve Raporlama: Proje süreci boyunca,
kod yorumları, README dosyası ve bu proje raporu
gibi dokümantasyon çalışmaları paralel olarak
yürütülmüştür. Bu, projenin anlaşılırlığını artırmış ve
gelecekteki geliştirmeler için bir referans noktası
oluşturmuştur.
•
•
•
IV. SONUÇLAR
Geliştirilen "Mahalle İhtiyaç Panosu (Mikro Yardım Ağı)" web
uygulaması, belirlenen tüm hedeflere ve YZM212 - Web
Programlama dersi değerlendirme kriterlerine başarıyla
ulaşmıştır. Proje, Django web çatısının güçlü yapısını etkin bir
şekilde kullanarak, mahalle bazında mikro yardımlaşma
ihtiyaçlarına yenilikçi ve pratik bir çözüm sunmaktadır. Yapılan
kapsamlı testler ve demo çalışmaları sonucunda, uygulamanın
genel işleyişinin sorunsuz ve istikrarlı olduğu, kullanıcıların ilan
oluşturma, görüntüleme, düzenleme ve silme gibi temel CRUD
işlemlerini herhangi bir aksaklık yaşamadan gerçekleştirebildiği
gözlemlenmiştir.
Özellikle şu sonuçlar elde edilmiştir:
•
•
•
•
Özgün Fikrin Gerçekleşimi: "Mikro yardım ağı" fikri,
kullanıcı dostu bir arayüz ile somutlaştırılmış, mahalle
sakinlerinin ihtiyaçlarını kolayca ilan edebilmesi ve
gönüllülerin bu ilanlara yanıt verebilmesi sağlanmıştır.
Bu, toplumsal dayanışmayı artırma potansiyeline sahip,
önemli bir sosyal katkı sunmaktadır.
Sağlam ve İlişkisel Veri Modeli: HelpRequest, User
ve Category modelleri, ders gereksinimlerine uygun
olarak en az 5 alanla ve güçlü Many-to-one, Many-toMany ilişkilerle tasarlanmıştır. Bu yapı, veri
bütünlüğünü sağlamış ve karmaşık sorgulamalara
olanak tanıyarak uygulamanın veri yönetimini optimize
etmiştir.
Kullanıcı Odaklı CRUD Sayfaları: Django'nun admin
panelinden bağımsız, her bir CRUD işlemi için özel
olarak tasarlanmış sayfalar, kullanıcı deneyimini önemli
ölçüde iyileştirmiştir. Kullanıcılar, web sitesi üzerinden
doğrudan ve sezgisel bir şekilde ilanlarını
yönetebilmektedir.
Etkin Şablon Kullanımı: Django şablon dili, dinamik
içeriklerin sayfalarda sorunsuz ve estetik bir şekilde
gösterilmesini sağlamıştır. Değişkenler, etiketler ve
filtreler, kod tekrarını önlerken uygulamanın genel
dinamizmini artırmıştır.
Güvenli Kimlik Doğrulama ve Yetkilendirme:
Kullanıcıların kayıt, giriş, çıkış ve şifre sıfırlama
işlemleri, Django'nun güvenlik standartlarına uygun
olarak başarıyla entegre edilmiştir. "Yardım İsteyen" ve
"Gönüllü" rolleri ile farklı yetki seviyeleri uygulanarak,
her kullanıcının sadece kendi yetki alanındaki işlemleri
yapabilmesi sağlanmıştır.
Kullanışlı Arama ve Veri Aktarma: Kullanıcıların
ilanları kolayca bulabilmesi için konu, kategori ve
tarihe göre çok kriterli arama özelliği, veri
erişilebilirliğini artırmıştır. Toplu veri yönetimi için
geliştirilen CSV import/export işlevleri ise, verilerin
yedeklenmesi ve taşınmasında büyük kolaylık
sağlamıştır. Bu özellikler, herhangi bir dış kütüphane
kullanılmadan özgün olarak geliştirilmiştir.
HTML5 ve CSS3 Uyumluluğu: Uygulamanın ön
yüzü, belirlenen tüm HTML ve CSS gereksinimlerine
uygun olarak tasarlanmıştır. HTML5 doğrulama, <h1><h3> başlık kullanımı, liste ve tablo yapıları, form
elemanları ve div kullanımı ile CSS özelliklerinin etkin
kullanımı sağlanmıştır. Tasarımda Bootstrap gibi hazır
çerçeveler kullanılmayarak özgünlük ve teknik
yeterlilik vurgulanmıştır.
V. TARTIŞMA
"Mahalle İhtiyaç Panosu" projesi, temel hedeflerini başarılı bir
şekilde yerine getirerek mahalle bazında mikro yardımlaşma
ihtiyacına önemli bir çözüm sunmuştur. Mevcut haliyle,
uygulama güvenli bir ortamda ilan oluşturma, görüntüleme ve
yönetme imkanları sunmakta, aynı zamanda kimlik doğrulama
ve yetkilendirme gibi kritik güvenlik mekanizmalarını
içermektedir. Ancak, projenin kapsamını ve kullanıcı deneyimini
daha da zenginleştirmek, potansiyelini tam anlamıyla ortaya
çıkarmak için bazı önemli geliştirme alanları ve eklenebilecek
özellikler bulunmaktadır. Bu tartışma bölümünde, projenin güçlü
yönleri vurgulanırken, gelecekteki iyileştirmeler ve genişletme
potansiyelleri ele alınacaktır:
•
•
Coğrafi Konum Entegrasyonu ve Harita Desteği:
Mevcut sistem, mahalle bazında bir ayrım sunsa da,
kullanıcıların ilanları harita üzerinde görmesi veya
kendi konumlarına en yakın yardım taleplerini
filtrelemesi büyük bir katma değer sağlayacaktır.
Google Maps API gibi harici servislerin
entegrasyonuyla, ilanların harita üzerinde gösterilmesi,
gönüllülerin kendilerine en yakın ihtiyaçları hızlıca
tespit etmesine ve yön bulmasına olanak tanır. Bu, hem
zaman tasarrufu sağlar hem de gönüllü katılımını teşvik
eder.
Anlık Bildirimler ve Uygulama İçi Mesajlaşma:
İlanlara yanıt verildiğinde, bir ilan kabul edildiğinde
veya yeni bir ilan yayınlandığında kullanıcılara anlık
bildirimler (örneğin, web push notification veya eposta/SMS bildirimleri) gönderilmesi, etkileşimi ve
yanıt süresini önemli ölçüde hızlandıracaktır. Ayrıca,
ilan sahipleri ile gönüllüler arasında doğrudan
uygulama içi mesajlaşma sistemi entegrasyonu, iletişimi
daha güvenli, özel ve pratik hale getirebilir, dış
platformlara bağımlılığı azaltır.
•
•
•
•
•
Gönüllü Puanlama ve İtibar Sistemi: Gönüllülerin
yaptıkları yardımlar için bir puanlama sistemi veya
başarı rozetleri oluşturulması, motivasyonu artırabilir ve
gönüllülük faaliyetlerini daha teşvik edici hale
getirebilir. Aynı zamanda, yardım alan kullanıcıların
gönüllüler hakkında geri bildirim ve derecelendirme
bırakabilmesi, topluluk içinde güveni ve şeffaflığı
pekiştirerek daha kaliteli etkileşimlerin oluşmasına
yardımcı olacaktır.
Sosyal Medya Paylaşım Entegrasyonu: Kullanıcıların
acil veya önemli yardım ilanlarını doğrudan sosyal
medya platformlarında (Facebook, Twitter vb.)
paylaşabilmesi, projenin görünürlüğünü ve potansiyel
gönüllü tabanını hızla genişletebilir. Bu, özellikle acil
durumlarda daha geniş kitlelere ulaşmayı kolaylaştırır.
Yapay Zeka Destekli Akıllı Eşleştirme: İleri düzeyde,
ilanların içeriğine (anahtar kelimeler, kategori) ve
gönüllülerin profil bilgilerine (yetkinlikler, boş
zamanlar, tercih edilen yardım türleri) göre yapay zeka
destekli akıllı eşleştirme algoritmaları geliştirilmesi,
yardım süreçlerini daha verimli hale getirebilir. Bu
sayede, en uygun gönüllü ve ihtiyaç sahibi daha hızlı bir
araya gelebilir.
Mobil Uygulama Geliştirme: Mevcut web
uygulamasının yanı sıra, iOS ve Android platformları
için yerel (native) mobil uygulamaların geliştirilmesi,
uygulamanın erişilebilirliğini ve kullanıcı
memnuniyetini önemli ölçüde artıracaktır. Mobil
uygulamalar, bildirimler, konum servisleri ve daha
entegre bir kullanıcı deneyimi sunabilir.
Daha Kapsamlı Yönetim Paneli ve Raporlama:
Django'nun admin paneli temel yönetim işlevlerini
sağlasa da, uygulama yöneticileri için özel olarak
tasarlanmış daha kapsamlı bir yönetim paneli ve çeşitli
raporlama (örneğin, en çok talep edilen yardım türleri,
en aktif gönüllüler, belirli bir mahalledeki ilan
yoğunluğu) yeteneklerinin eklenmesi, projenin daha iyi
analiz edilmesine ve geliştirilmesine olanak tanır.
KAYNAKLAR
[1] Django Documentation. (2024). Models. Django Project.
https://docs.djangoproject.com/en/4.2/topics/db/models/ [2]
Django Documentation. (2024). The Django template language.
Django Project.
https://docs.djangoproject.com/en/4.2/topics/templates/ [3]
Python Software Foundation. (2024). Python documentation.
https://docs.python.org/3/ [4] W3C. (2024). HTML5. World
Wide Web Consortium. https://www.w3.org/TR/html5/ [5] W3C.
(2024). Cascading Style Sheets (CSS) Level 3. World Wide Web
Consortium. https://www.w3.org/Style/CSS/specs.html [6] Git
Documentation. (2024). Git Basics. Git Project. https://gitscm.com/doc/
1
1
1
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )