Problem
Bir görevin ne olduğunu bilmek yetmiyor: ne zaman biteceği, hangi kategoriye ait olduğu ve belgelerinin nerede durduğu da önemli. TaskFlow’da bu bilgileri tek ekranda toplayan bir görev yönetimi uygulaması geliştirdik. İki kişilik ekip çalışmasında React arayüzü, FastAPI servisleri ve dosya yönetimi birlikte ele alındı.
Kullanıcı kendi görevlerini oluşturabiliyor, durum ve kategoriye göre filtreleyebiliyor, başlıkta arama yapabiliyor. Admin ekranında kullanıcılar ve görevler listeleniyor; görevler başka kullanıcılara atanabiliyor.
Full-stack yapı
React arayüzünü Vite ve Tailwind CSS ile kurduk. Sayfalar ve tekrar kullanılan bileşenler ayrıldı; oturum bilgisi AuthContext, API iletişimi Axios üzerinden yönetiliyor. FastAPI tarafında auth, tasks, categories, files ve admin router’ları; SQLAlchemy modelleri, Pydantic şemaları ve ortak dependency’ler ayrı modüllerde bulunuyor.
JWT ile oturum doğrulaması, bcrypt ile parola hashleme kullanılıyor. Görev sorguları kullanıcı kimliğine göre filtreleniyor; admin işlemleri ayrı bir rol dependency’sinden geçiyor. User, Category, Task ve TaskFile modelleri SQLite üzerinde ilişkili tutuluyor.
Görev ve dosya akışları
Görevler In Progress, Completed ve Overdue durumlarıyla takip ediliyor. Son tarih/saat kontrolü geciken görevleri güncelliyor; arayüz, teslimine 24 veya 48 saat kalan işleri farklı renklerle gösteriyor. Kategori ve durum dağılımları Recharts ile görselleştiriliyor.

Dosya yüklemede PDF, PNG, JPG/JPEG, DOCX ve XLSX uzantıları ile 10 MiB sınırı uygulanıyor. Fiziksel dosya UUID adıyla saklanıyor; orijinal ad, boyut, yükleyen kullanıcı ve görev ilişkisi veritabanına yazılıyor.
Test ve teknik sınırlar
Pytest ve FastAPI TestClient ile auth, görev, kategori, dosya ve admin işlemleri için 39 test fonksiyonu tanımlandı. Test fixture’ları in-memory SQLite ve DB dependency override kullanıyor. Bu sayı tanımlı senaryoları ifade ediyor; bu portföy hazırlığında testler yeniden çalıştırılmadı.
Kategori adının kullanıcı bazında benzersizliği ve görev-kategori sahiplik kontrolleri geliştirilmesi gereken alanlar. Dosya yüklemenin streaming ile yapılması ve disk/veritabanı temizliğinin birlikte yönetilmesi de sonraki adımlar. Overdue hesabı istek sırasında çalışıyor; bağımsız bir bildirim servisi bulunmuyor.
Sonuç
Görev CRUD, filtreleme, teslim tarihi uyarıları, dosya ekleri ve istatistik ekranları aynı uygulamada birleştirildi. Proje, React arayüzünden API sözleşmelerine, ilişkisel veri modelinden erişim kontrollerine kadar full-stack bir iş uygulamasının temel akışlarını kapsıyor.
