11 puan yazan GN⁺ 2025-10-17 | 1 yorum | WhatsApp'ta paylaş
  • Flask tabanlı backend odaklı bir web çerçevesi olarak, karmaşık frontend yönetimi olmadan hızlı ve basit durum yönetimi sunar
  • HTMX ile birleşen bileşen mimarisi sayesinde, sunucu tabanlı etkileşimli kullanıcı arayüzleri oluşturmayı mümkün kılar
  • Dosya tabanlı yönlendirme, esbuild + TailwindCSS varlık hattı, otomatikleştirilmiş dağıtım ortamı gibi modern web yığını entegrasyonları sunar
  • E-posta gönderimi (MJML), arka plan işleri, SSE tabanlı push, çeviri, kimlik doğrulama gibi çeşitli yerleşik özellikler içerir
  • Konteyner tabanlı geliştirme ve dağıtım ortamı standardizasyonu ile VS Code entegrasyonu sayesinde kolay kurulum ve buluta dağıtım desteği sağlar

Genel Bakış: Flask tabanlı backend odaklı web uygulaması çerçevesi

  • Hyperflask, Flask üzerinde çalışan bir Python web çerçevesidir ve backend güdümlü tasarımı hedefler
  • Frontend durum yönetiminin karmaşıklığını azaltır ve sunucu merkezli sade bir mimari sunar
  • HTMX, TailwindCSS, esbuild gibi modern web teknolojilerini varsayılan olarak içerir
  • HTMX entegrasyonu sayesinde sayfanın tamamını yeniden yüklemeden gerçek zamanlı etkileşim sağlanabilir
  • Bileşen mimarisi ile backend ve frontend bileşenleri yeniden kullanılabilir
    • Flask ortamına bileşen merkezli bir yapı getirerek, frontend ve backend bileşenlerinin Jinja şablonlarında doğrudan kullanılmasını sağlar
    • HTMX ile birleşen sunucu backend tipi bileşenler üretilebilir; ayrıca React veya web bileşenleriyle de doğal biçimde entegre olur
    • Kod yeniden kullanımını ve bakım kolaylığını artırarak büyük ölçekli uygulama geliştirmeye de uygun bir yapı sunar
  • Dosya tabanlı ve uygulama tabanlı yönlendirme desteği
    • Python kodu ile Jinja şablonlarını birleştiren yeni bir .jpy dosya biçimi kullanır
    • Astro'nun sayfa sisteminden ilham alarak, rota tanımları ve kullanıcı arayüzü yapılandırmasını tek bir yerde yönetmeyi sağlar
    • Böylece yönlendirme yapılandırması sadeleşir ve yeni sayfa eklemek daha sezgisel hale gelir
  • Açık ekosistem
    • Hyperflask'ın kendi kod tabanı küçüktür ve çeşitli Flask eklentilerini organik biçimde birleştirerek oluşturulmuştur
    • Her eklenti bağımsız bir proje olarak yönetilir ve özgürce seçilip birleştirilebilir
    • Tüm projeler GitHub'daki Hyperflask organizasyonu altında açık olarak sunulur ve kullanıcıya özel çerçeve yapılandırmalarını teşvik eder
  • “Batteries Included”
    • MJML e-posta gönderimi, dramatiq arka plan işleri, SSE tabanlı gerçek zamanlı push, gettext tabanlı çeviri (i18n)
    • Kimlik doğrulama ve oturum yönetimi, görsel optimizasyonu ve streaming, statik içerik üretimi vb.
    • Ayrı yapılandırma gerektirmeden hemen kullanılabilen üretim düzeyinde bir özellik seti sunar
    • SQL merkezli ORM (sqlorm), SQLite için optimize edilmiştir
  • Ortam yapılandırması ve dağıtım
    • Konteyner tabanlı geliştirme/çalıştırma ortamını standartlaştırarak ortam yapılandırma sorunlarını en aza indirir
    • VS Code ile sıkı entegrasyon sayesinde yerel geliştirme ve hata ayıklama kolaylaşır
    • VPS veya başlıca bulut servislerine kolay dağıtım desteği sunar

Özet

  • Hyperflask, Flask ekosistemini genişleterek modern bir tam yığın Python web geliştirme deneyimi sunan yeni nesil bir çerçevedir
  • HTMX ve bileşen sistemi, dosya tabanlı yönlendirme, konteynerle standartlaştırılmış geliştirme ortamı sayesinde minimum yapılandırmayla maksimum üretkenlik sağlar

1 yorum

 
GN⁺ 2025-10-17
Hacker News yorumu
  • Hyperflask'ın geliştiricisi olarak, uzun zamandır hazırlandığım projeyi nihayet duyurabilmekten mutluyum
    Ayrıntılı duyuru yazısına buradan ulaşabilirsiniz
    Her türlü geri bildirimi duymak isterim

    • Bunun backend'e bağlı olmayan bir kütüphane biçiminde olması daha iyi olurdu gibi geliyor
      Zaten bir milyondan fazla satırlık bir Django projem var, bu yüzden kolayca değiştiremiyorum; bunu bir Django uygulamasına kolayca uygulamanın bir yolu var mı merak ediyorum

    • htmx geliştiricisi olarak bu proje gerçekten harika görünüyor

    • Bir iş arkadaşım flask/htmx/sqlalchemy kombinasyonuyla dahili bir uygulama yaptı ve iyi sonuç aldı, ancak açık kaynak onayı alamamıştı
      Bu yüzden hyperflask'ın yeni denemesini merakla bekliyorum

    • ORM olarak neden sqlorm seçildiğini merak ediyorum
      Uzun süredir Python geliştirmeden uzağım ama herkesin SQLAlchemy kullandığını sanıyordum; sqlorm ise bana yabancı geliyor

    • Yeni bir framework'ün HTMX'i benimsemiş olması etkileyici
      HTMX, JS ve React'e alternatif olabilecek çeşitli yeni eğilimleri tetikliyor
      Python ve Flask kombinasyonunu seven çok kişi olacaktır; ayrıca sunucu tarafı HTMX'te bileşenler kilit önem taşıyor
      Bir de ana sayfanın FastHTML'den daha rahat okunuyor olması artı bir nokta
      harcstack.org ile kıyaslarsak

      Language: Python vs. Raku  
      Web framework: Flask vs. Cro  
      ORM: ?? vs. Red  
      Components: ikisinde de var  
      HTML: template vs. fonksiyonel  
      CSS: DaisyUI/Tailwind/Bootstrap vs. Pico  
      

      Bu seçenekler sayesinde çok daha geniş bir kullanıcı kitlesini çekebileceğini düşünüyorum
      Karşılaştırılan HARC stack ise HTML'i Elm dilinin sunucu tarafı bir sürümü gibi işlevsel biçimde ele almak isteyenlere ya da Tailwind'in denormalizasyonuna alerjisi olan küçük bir kesime hitap ediyor gibi görünüyor

  • htmx ile web uygulaması geliştirirken bir noktada bunun bir 'çıkmaz sokak' olduğunu hissettim
    Asıl sorun, frontend uygulama durumunun URL'de saklanması gerekmesi
    Farklı bölgeler, widget'lar, açılır pencereler vb. her birinin yerel duruma ve gezinmeye ihtiyaç duyduğu modern arayüzlerde, tüm durumu tek bir global URL'ye sığdırmak son derece zor
    İhtiyaç halinde durumu URL'ye hiç koymamak da daha zor bir tasarım haline geliyor
    React veya Vue gibi kendi durum deposunu sağlayan framework'lerde bu sorun kolayca çözülüyor
    phpBB forumu gibi kurgulanırsa sorun olmayabilir ama günümüz kullanıcıları daha gelişmiş bir deneyim bekliyor

    • Durumu yalnızca URL'de tutmak zorunda değilsiniz
      Sunucu depolaması, oturum, localstorage, çerezler gibi çeşitli yöntemler var
      Örneğin kullanıcının uygulama yerleşimini özelleştirmesi için URL gerekmez ama arama sonuçları gibi paylaşım gereken durumlarda arama koşullarının mutlaka URL'de olması gerekir
      Asıl düşünülmesi gereken, neyi başarmaya çalıştığınızdır
      Ayrıca 'modern UI' adı altında çok sayıda widget'ı ve açılır pencereyi tek bir ekrana/tek bir URL'ye doldurmak aslında gereksiz bir karmaşıklık da olabilir
      Çoğu zaman React/Vue'nun sunduğu durum saklama, zaten sunucuda yönetilebilecek şeylerin tekrarıdır

    • Hiper medya yaklaşımı da yeterince karmaşık arayüzleri rahatlıkla yönetebilir
      Her şeyi ille de URL'de tutmak zorunda değilsiniz
      Durumu sekme bazında paylaşmak ya da yalıtmak için oturumlar, çerezler, sekme kimlikleri vb. kullanılabilir; ardından backend veritabanından durum okunabilir
      Hiper medya, gerçek zamanlı/çok oyunculu ortamlarda da çok güçlüdür
      Hatta HTMX'in zayıf yanı, durumu backend'de daha fazla tutmaması; keşke bu konuda daha da ileri gitseydi

    • Bence mesele sadece bunun benim kullanım senaryoma uymaması
      React/Vue'ya 'kolay' demeniz de ilginç

    • React ya da Vue'nun da kullanıcıların beklediği her sorunu çözdüğünü düşünmüyorum

    • Çok yüksek karmaşıklık gerektiren durumlar dışında ben pratikte çoğu vakayı htmx (unpoly, alpinejs, localstorage kombinasyonuyla) ile sorunsuz şekilde hallediyorum

  • hyperflask'ta ilginç kavramlar gördüm

    • Bileşen uygulaması: bağlantı
    • View ve controller'ı tek dosyada birleştirme yaklaşımı: bağlantı
      Ancak bileşenler aslında içerde sıradan makrolardan ibaret gibi; o halde makroları doğrudan kullanmak daha iyi olmaz mı diye düşündüm
      Flask tercihinin nedeni de merak konusu
      Geçmişte /dev/push adlı benzer bir yaklaşım denedim ve sonra FastAPI + Jinja2 + Alpine.js + HTMX kombinasyonuna geçtim
      FastAPI'nin sadece API için olmadığını fark ettim ve async desteğine ihtiyaç duyduğum için onu seçtim
      Flask'ı da seviyorum ama sınırlı kaldığını hissettiğim oldu
    • View ve controller'ı tek dosyada birleştirme yaklaşımı bana eski PHP geliştirme günlerini hatırlatıyor
      Projenin ölçeğine bağlı olarak geliştirmeyi gerçekten basitleştirdiği için avantajlıydı

    • FastAPI + HTMX kombinasyonunun da oldukça etkili olduğunu düşünüyorum

  • Django'da edindiğim deneyime göre, admin scaffolding özellikleri sayesinde teşhis ve müşteri desteği için arayüzleri elle yazmaya neredeyse hiç gerek kalmıyordu
    Başka framework'lerle yapılan projelerde bu tür özellikleri kendiniz geliştiriyorsunuz ve sonuç çoğu zaman Django kadar tatmin edici olmuyor
    Hyperflask gibi çekici görünen pek çok framework var ama Django'nun admin framework'ünden vazgeçmek ciddi bir bedel
    Gerçekten Django admin'e alternatif ya da onu ikame eden bir desen bulan var mı merak ediyorum

    • Ben de aynı şeyi hissettim
      FastAPI'ye geçince Django'dan en çok özlediğim şey, projeyi oluşturan çeşitli uygulamalardı
      Migration'lar, statik dosyalar, template'ler gibi şeylerin özellik bazlı gruplandırılmış yapısının ne kadar rahat olduğunu sonradan fark ettim

    • Ben çoğunlukla Supabase kullanıyorum
      Acil yönetim işleri için yöneticileri Supabase UI üzerinden eğitip görevlendirebiliyorum
      Ya da mümkünse Airtable'ı backend olarak kullanıyorum
      Ama çoğu zaman yine Django admin'i çok özlüyorum ve Django+HTMX kombinasyonu her zaman cazip geliyor

    • Flask-Admin de var ama Django Admin'e kıyasla çok daha basit kalıyor
      Gelecekte bu sorunu çözmek isterim

  • Çeşitli framework'lerle HTMX kullandıktan sonra, Go + Templ + HTMX kombinasyonunun çok yönlülük ile sadeliği iyi bir şekilde birleştirdiğini düşünüyorum

    • Benim deneyimime göre Go fazla ayrıntılı, bu yüzden aslında Go+Templ+HTMX'ten Flask + Jinja + HTMX'e geçmeyi düşünüyorum
      Go'nun template tanımlama biçimi bana yorucu geliyor

    • Sonraki denemek istediğim kombinasyon kesinlikle FastAPI + Jinja2 + HTMX
      Şu anda bu stack'i kullanıyorum

  • hyperflask, Flask ve htmx'in felsefesiyle tam uyumlu değilmiş gibi geliyor
    Çok fazla soyutlama katmanı var ve htmx ile gerçek entegrasyon noktaları da pek görünmüyor
    FastHTML gibi htmx'in yerleşik olduğu bir yapı bekliyordum

    • FastHTML'i gerçekten keyifle kullanıyorum
  • Bir projede starfield demosu gördüğümde, hep hız ayarı ve fare imlecini takip etme efekti olmasını bekliyorum
    Umarım sonraki Hyperflask sürümünde eklenir
    Projenin kendisi harika ve Htmx'i seviyorum, ama son zamanlarda Datastar'ı da yakından izliyorum

    • Konsolda aşağıdaki kodu çalıştırırsanız hız ayarı dahil çeşitli efektler verebilirsiniz

      new WarpSpeed("warpdrive", {
        "speed": 20,
        "speedAdjFactor": 0.03,
        "density": 2,
        "shape": "circle",
        "warpEffect": true,
        "warpEffectLength": 5,
        "depthFade": true,
        "starSize": 3,
        "backgroundColor": "hsl(224,15%,14%)", 
        "starColor": "#FFFFFF"
      });
      
    • Acaba bunun gibi bir işlevden mi söz ediyorsunuz?

    • nova.app şimdiye kadar gördüklerim arasında en iyisi

  • HTMX tabanlı tam kapsamlı bir Fullstack Async deneyim istiyorsanız Litestar'a da bakmaya değer

  • İlk gördüğümde, Python controller dosyasına HTML template'lerini doğrudan ekleyen yapının neden gerekli olduğunu anlamakta zorlandım
    Sanki yalnızca tek bir render fonksiyonunu kaldırmak için daha fazla karmaşıklık eklenmiş gibi geliyor
    Benim kaçırdığım noktanın ne olduğunu merak ediyorum

  • Pek çok kişi Flask'ın sınırlarından söz edip 'neden FastAPI değil?' diyor ama bence en iyi alternatif Litestar
    Litestar, htmx desteğini varsayılan olarak sunuyor
    Ayrıntılı bilgiye buradan ulaşabilirsiniz