Python ve Flask ile Modern Bir To-Do Uygulaması Geliştirmek

Günlük hayatın karmaşasında görevlerimizi düzenlemek ve önceliklendirmek, verimliliğimizi artıran en önemli faktörlerden biridir. Bu yazıda, Python’un güçlü web framework’ü Flask ve hafif veri tabanı SQLite kullanarak geliştirdiğimiz, modern özelliklere sahip kapsamlı bir “To-Do List” (Yapılacaklar Listesi) uygulamasını detaylandıracağız.

Projeye Genel Bakış

Geliştirdiğimiz uygulama, kullanıcıların görevlerini kolayca ekleyebileceği, düzenleyebileceği, önceliklendirebileceği ve tamamlananları takip edebileceği bir web arayüzü sunar. Sadece basit bir liste değil, aynı zamanda görev istatistikleri ve gelişmiş filtreleme seçenekleri ile donatılmış fonksiyonel bir araçtır.

Temel Özellikler

  • Görev Yönetimi: Görev ekleme, güncelleme, silme ve tamamlandı olarak işaretleme.
  • Öncelik Sistemi: Görevleri “Yüksek”, “Orta” ve “Düşük” olarak sınıflandırarak kritik işlere odaklanma imkanı.
  • Akıllı Filtreleme: Tüm görevler, bekleyenler, tamamlananlar veya sadece yüksek öncelikli görevler arasında hızlı geçiş.
  • Canlı İstatistikler: Toplam görev sayısı, tamamlananlar ve bekleyen kritik görevlerin anlık takibi.
  • Kullanıcı Dostu Arayüz: Jinja2 şablonları ile temiz ve modüler bir tasarım.

Teknik Mimari ve Dosya Yapısı

Proje, sürdürülebilirliği artırmak adına mantıksal parçalara ayrılmıştır:

  • todo_app.py: Uygulamanın giriş noktasıdır. Flask konfigürasyonlarını yapar ve SQLite veri tabanının hazır olduğundan emin olur.
  • todo_helpers.py: Uygulamanın “beyni” burasıdır. Tüm HTTP rotaları (routes), veri tabanı sorguları ve iş mantığı bu dosyada yönetilir.
  • todo_templates/: HTML şablonlarının bulunduğu klasördür. base.html genel iskeleti sağlarken, index.html ve edit.html sayfaya özel içerikleri sunar.
  • todo.db: Verilerin kalıcı olarak saklandığı SQLite veri tabanı dosyası.

Kod Analizi

1. Veri Tabanı Yönetimi

Uygulama başladığında ensure_db() fonksiyonu çalışarak tasks tablosunun varlığını kontrol eder. Tablo yapısı şu şekildedir:

  • id: Otomatik artan benzersiz kimlik.
  • title: Görevin adı.
  • priority: Öncelik seviyesi (Varsayılan: medium).
  • done: Tamamlanma durumu (0: Hayır, 1: Evet).
  • created_at: Görevin oluşturulma zamanı.

2. Rotalar ve İş Mantığı (todo_helpers.py)

Uygulamanın dinamik yapısını sağlayan rotalar şu şekilde kurgulanmıştır:

  • Ana Sayfa (/): Kullanıcının seçtiği filtreye göre görevleri veri tabanından çeker ve öncelik sırasına göre sıralayarak listeler.
  • Görev Ekleme (/add): Formdan gelen verileri alır ve yeni bir görevi zaman damgasıyla birlikte kaydeder.
  • Durum Değiştirme (/toggle/<id>): Görevin tamamlanma durumunu tersine çevirir (True $\leftrightarrow$ False).
  • Düzenleme (/edit/<id>): Hem görevi görüntülemek (GET) hem de güncellenmiş verileri kaydetmek (POST) için kullanılır.
  • Temizlik (/clear_done): Tüm tamamlanmış görevleri tek tıkla temizleyerek listeyi ferahlatır.

Kurulum ve Çalıştırma

Projeyi yerel makinenizde çalıştırmak için şu adımları izleyebilirsiniz:

  1. Gerekli Kütüphaneleri Kurun:
   pip install flask
  1. Uygulamayı Başlatın:
   python todo_app.py
  1. Tarayıcıdan Erişin:
    http://localhost:8117 adresine giderek uygulamanızı kullanmaya başlayın.

Sonuç ve Geliştirme Önerileri

Bu proje, Python ile web geliştirmenin temel prensiplerini anlamak için mükemmel bir başlangıç noktasıdır. Uygulamayı daha da geliştirmek isterseniz şu özellikleri ekleyebilirsiniz:

  • Kullanıcı Giriş Sistemi: Farklı kullanıcıların kendi listelerini yönetebilmesi için kimlik doğrulama.
  • Kategori Desteği: Görevleri “İş”, “Kişisel”, “Alışveriş” gibi kategorilere ayırma.
  • Hatırlatıcılar: Belirli tarihler için bildirim sistemi.

Ahmet Aksoy

Not: Bu yazıda incelediğimiz kodu ve benzer projelerin kaynak kodlarını https://github.com/ahmetax/practical-python-examples adresinde bulabilirsiniz.

Python, Flask, SQLite, Web Uygulaması, To-Do App, Yazılım Geliştirme

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir