Topçular App: Yurt Yönetiminde Dijital Dönüşüm
Kağıt listeler, manuel yoklamalar ve kontrolsüz WhatsApp gruplarının yarattığı operasyonel kaosu ortadan kaldırmak için geliştirilmiş amiral gemisi Flutter Clean Architecture MVP projesi. Kanıt yüklemeli görev iş akışları, adil gece nöbeti rotasyon algoritmaları, kağıtsız yoklama, yemekhane ve telafi sistemi, dijital izin ve santral kontrol merkezi; gerçek zamanlı Firestore eşzamanlaması ve otomatize Cloud Functions ile desteklenir.
Problem Tanımı
Öğrenci yurdunun tüm günlük operasyonları — görev atamaları, gece nöbetleri, yemekhane vardiyaları, yoklamalar ve giriş-çıkış izinleri — kağıt formlar, tablolar ve dağınık WhatsApp mesajları üzerinden yürütülüyordu. Tek bir doğruluk kaynağı yoktu: kim hangi nöbetten sorumluydu, görev gerçekten tamamlandı mı ve doğrulanabilir kanıt var mıydı sorularının cevabı sürekli belirsiz kalıyordu. "Bugün yemekhanede kim görevli?", "Gece nöbeti adil mi?", "Hangi öğrenci gerçekten izinli?" gibi sorular kağıtlarda kayboluyordu. Yöneticilerin tek ekrandan atama yapması, revize istemesi ve onaylaması; öğrencilerin görev listesini görmesi, tamamlama kanıtı yüklemesi ve görev bazlı iletişim kurması gerekiyordu. Çözümün katı roller uygulaması, zayıf bağlantıda güvenilir çalışması ve anlık bildirimler sunması; tüm bunları değiştirilemez denetim izi ve sıkı erişim kontrolüyle temellendirmesi gerekiyordu.
Rolüm: Lead Developer & Architect
Geleneksel öğrenci yurt yönetimi; kağıt listeler, manuel yoklamalar ve kontrolü zor WhatsApp grupları arasında sıkışmış durumdadır. "Bugün yemekhanede kim görevli?", "Gece nöbeti adil mi?", "Hangi öğrenci gerçekten izinli?" gibi soruların cevapları genellikle kağıtlarda kaybolur veya kişisel hafızalara dayanır.
Topcular App, bu operasyonel karmaşayı ortadan kaldırmak için geliştirilmiş; yurdun tüm günlük süreçlerini tek bir dijital platformda toplayan, veriye dayalı ve izlenebilir bir yönetim ekosistemidir. Temel amacımız, manuel süreçlerdeki insan hatasını sıfıra indirmek ve yönetimle öğrenciler arasındaki iletişimi şeffaf bir zemine oturtmaktır.
Çözüm odaklı temel özellikler
A. Dinamik Görev ve Nöbet Yönetimi
İzlenebilir iş akışı
Adminler görevleri atar, personeller atanan görevi tamamladığında isteğe bağlı kanıt (fotoğraf/dosya) yükler ve adminin onayına sunar. "Görmedim" veya "Unuttum" bahanesi, anlık push bildirimleri ve değiştirilemez tarihsel kayıtlarla tamamen ortadan kalkar.
Akıllı nöbet sistemleri
Standart nöbetler ayrıntılı dijital checklist'lerle takip edilirken; Gece Nöbeti modülünde çalışan özel rotasyon algoritması, her personelin geçmiş nöbet sayısını analiz ederek kanıtlanabilir biçimde adil bir görev dağılımı sağlar.
B. Operasyonel Süreçlerin Dijitalleşmesi — Yoklama ve Yemekhane
Kağıtsız yoklama
Manuel imza listeleri yerine, görevli personelin mobil uygulaması üzerinden anlık katılım verilerini izleyerek yoklama alması sağlanır. Tüm kayıtlar merkezi bir sistemde güvenli şekilde saklanır; geçmiş verilere tek tıkla erişilebilir ve detaylı raporlamalar kolaylıkla oluşturulabilir. Böylece fiziksel defterlerin kaybolması veya veri bütünlüğünün bozulması gibi riskler ortadan kaldırılır. Bu dijital dönüşüm adımı, kurumların operasyonel verimliliğini artırırken aynı zamanda geleceğe dönük veri toplama, işleme ve analiz kabiliyetlerini güçlendirir. Kurumsal hafızanın sürdürülebilir ve erişilebilir hale gelmesi açısından stratejik bir altyapı oluşturur.
Yemekhane ve telafi kuyruğu sistemi
Haftalık yemekhane nöbetleri önceden planlanır ve tüm öğrencilere duyurulur. Devamsızlık durumlarında sistem otomatik olarak bir "telafi kuyruğu" oluşturur ve yönetir; manuel yeniden atama gerekmeksizin operasyon aksamadan sürer.
C. Güvenlik ve Kontrol Merkezi — Santral
Dijital izin süreci
Öğrenci izin talepleri tamamen uygulama üzerinden yapılır ve onaylanır. Kağıt belge kaybolma veya sahte belge riski ortadan kalkar: Santraldeki personel, onaylı izinleri anlık ekranında görür. Her giriş ve çıkış zaman damgasıyla kaydedilir; değiştirilemez ve eksiksiz bir denetim izi oluşur.
D. Kaynak ve Rol Atamaları
Nokta görevlendirme
Santral ve çayhane gibi kritik hizmet noktaları için haftalık görev takvimleri oluşturulur. Yalnızca yetkili rollerin müdahale edebildiği bu sistemle her hizmet noktasının sorumlusu netleşir ve belirsizlik ortadan kalkar.
Sonuç: Ölçülebilir fayda
Topcular App, sadece bir "kayıt tutma" uygulaması değildir; yurt yönetimini denetlenebilir, adil ve hızlı hale getiren bir yönetim aracıdır. Yurt ortamındaki disiplini teknolojiyle harmanlayarak hem yöneticiler için huzurlu bir yönetim, hem de öğrenciler için şeffaf bir yaşam alanı sunar.
- Zaman tasarrufu: Manuel form doldurma ve WhatsApp trafiği yaklaşık %80 oranında azalır.
- Adalet: Gece nöbeti rotasyonu ve telafi kuyruğu algoritmaları sayesinde görev dağılımındaki şikayetler minimuma iner.
- Veri güvenliği: Tüm geçmiş kayıtlar bulut üzerinde güvenle saklanır, şifrelenir ve talep edildiği an analiz edilip denetlenebilir.
Veri Mimarisi
users/{userId} # User profiles, RBAC roles, FCM tokens
tasks/{taskId} # Task management (title, assignees, status, deadline)
/submissions/{id} # Work proof and feedback
/messages/{id} # Task-based real-time communication
guardShifts/{shiftId} # Shift schedules (date, assignee, status)
/checklistItems/{id} # Operational checklists
students/{studentId} # Central student/data pool
permission_entries/{id} # Entry/exit and leave records (critical data source for the system)
rollCalls/{id}/entries # Digital attendance and roll call records
diningDutySchedules/ # Dining duty schedules and makeup queues
nightShiftSchedules/ # Fairly distributed night shift rotations
tayinSchedules/ # Fixed duty assignments (non-rotation roles)Veri modeli, yüksek eşzamanlılık ve rol bazlı erişim kontrolü (RBAC) gereksinimlerini karşılayacak şekilde tasarlanmıştır. Firestore'un NoSQL doğasına uygun olarak, veri erişim desenleri önceliklendirilmiş ve buna göre denormalizasyon stratejileri uygulanmıştır. Alt koleksiyonlar (submissions, messages gibi) sayesinde veri, bağlamsal olarak izole edilerek hem doküman boyutu kontrol altında tutulmuş hem de okuma maliyetleri minimize edilmiştir. Kök koleksiyonlar ise yönetim panelleri ve analitik işlemler için hızlı ve doğrudan sorgulanabilir yapıdadır.
Sistem, kompleks sorguları düşük gecikme ile çalıştırabilmek için kapsamlı bileşik indeksler kullanır. Örneğin: tasks koleksiyonu için (assignedTo + status + createdAt), guardShifts için (guardId + shiftDate) ve permission_entries için (studentId + exitDateTime). Bu yaklaşım, özellikle kullanıcıya özel filtrelenmiş veri akışlarında milisaniye seviyesinde performans sağlar.
İş mantığının önemli bir kısmı Cloud Functions üzerinde otomatik olarak çalışır. Gece nöbeti ve yemekhane görevleri, geçmiş görev sayıları (shift counts) ve telafi kuyrukları (makeup queue) dikkate alınarak adil biçimde dağıtılır. Sistem, izinli kullanıcıları otomatik olarak filtreler ve her gün belirli saatlerde yeni görev planlarını oluşturup ilgili kişilere bildirim gönderir.
Güvenlik çok katmanlı olarak ele alınmıştır. RBAC yapısı hem Firebase Custom Claims hem de Firestore Security Rules üzerinden enforce edilir. Kritik state değişimleri (örneğin görev tamamlanma durumu) yalnızca yetkili roller veya backend servisleri tarafından yapılabilir. Tüm önemli işlemler audit log mantığıyla (createdBy, createdAt) izlenebilir şekilde tutulur.
Mimari, yatay ölçeklenebilirlik göz önünde bulundurularak tasarlanmıştır. Alt koleksiyon kullanımı sayesinde yüksek hacimli veri (örneğin mesajlaşma) ana dokümanları şişirmez. Bu sayede sistem, kullanıcı sayısı ve veri büyüklüğü arttıkça performans kaybı yaşamadan ölçeklenebilir.
Güvenlik
Sistem, performans ve güvenliği dengeleyen çift katmanlı bir RBAC (Role-Based Access Control) modeli uygular. Birincil doğrulama, Firebase Custom Claims üzerinden (request.auth.token.role) gerçekleştirilir ve bu sayede ek veritabanı okuması olmadan düşük gecikmeli yetkilendirme sağlanır. Fallback mekanizması olarak, gerekli durumlarda Firestore üzerindeki /users/{userId} dokümanı get() ile okunarak rol doğrulaması yapılır. Bu hibrit yaklaşım, hem hızlı hem de tutarlı bir yetkilendirme katmanı sunar.
Rol hiyerarşisi açık ve genişletilebilir şekilde tanımlanmıştır. isAdmin() fonksiyonu admin ve super_admin rollerine tam erişim sağlarken, isUserLike() daha kısıtlı operasyonel yetkilere sahip kullanıcıları kapsar. santralci, bas_santralci ve yurt_baskani gibi roller ise domain-specific yetkilerle sınırlandırılmıştır. Bu yapı, least-privilege prensibini enforce eder.
Veri erişimi "sahiplik (ownership)" prensibine göre sınırlandırılmıştır. Kullanıcılar yalnızca kendilerine atanmış görevleri (assignedTo == request.auth.uid) ve ilgili alt koleksiyonları görüntüleyebilir. Alt koleksiyon erişimlerinde üst döküman get() ile doğrulanarak dikey yetki ihlalleri (privilege escalation) engellenir. Bu yaklaşım, veri izolasyonunu güçlü şekilde garanti eder.
Firestore güvenlik kuralları yalnızca erişim kontrolü değil, aynı zamanda veri mutasyonlarını da denetler. Örneğin, bir kullanıcı görev durumunu sadece belirli state transition kuralları dahilinde güncelleyebilir (pending → submitted). completed gibi kritik state değişimleri yalnızca admin veya backend tarafından yapılabilir. Ayrıca diff() kontrolleri ile kullanıcıların sadece izin verilen alanları güncellemesi sağlanır.
Kritik iş akışları özel kurallarla korunur. permission_entries koleksiyonunda rol bazlı alan kısıtlamaları uygulanır; örneğin santralci kayıt oluşturabilir ancak onay alanlarını set edemez. Bildirim sistemi tamamen server-controlled olup, istemci tarafında create işlemi kesin olarak yasaklanmıştır (allow create: if false). Bu sayede sistem manipülasyonu önlenir.
Güvenlik yaklaşımı çok katmanlıdır (defense-in-depth). Tüm tanımlanmamış yollar için default deny (match /{document=**}) uygulanır. Ek olarak, tüm veriler tip ve içerik validasyonundan geçirilir (string, timestamp, size kontrolleri). read, get ve list operasyonlarının ayrıştırılması sayesinde veri sızıntısı riski minimize edilir. Bu yapı, hem istemci hatalarına hem de kötü niyetli girişimlere karşı dayanıklı bir sistem sağlar.
Kritik write operasyonları doğrudan istemciye bırakılmaz; Cloud Functions üzerinden idempotent ve kontrollü şekilde yürütülür. Bu sayede duplicate işlem, yarış durumu (race condition) ve spam riskleri minimize edilir. Ek olarak Firebase App Check entegrasyonu ile yalnızca doğrulanmış istemcilerin backend servislerine erişmesi hedeflenmektedir.
Sistem, izlenebilirlik (auditability) prensibiyle tasarlanmıştır. Kritik veri değişimleri createdBy ve createdAt alanlarıyla kayıt altına alınır. Bazı koleksiyonlarda (ör. submissions) delete operasyonunun tamamen kapatılması, geriye dönük denetim ve veri bütünlüğü açısından bilinçli bir tercihtir.
Mühendislik Kararları
project.architectureDiagram
Çerezler ve Analitik
Web sitesi deneyimini geliştirmek ve hizmetlerimizi iyileştirmek amacıyla sayfa görüntüleme ve kullanım istatistiklerine ilişkin anonim veriler toplanmaktadır. Toplanan veriler yalnızca analiz ve performans ölçümü amacıyla kullanılmakta olup kişisel veri içermemektedir.
Daha fazla bilgi için Gizlilik Politikası sayfasını inceleyebilirsiniz.
