2 puan yazan GN⁺ 2025-11-27 | 1 yorum | WhatsApp'ta paylaş
  • Flowglad, webhook olmadan çalışan açık kaynak bir ödeme işleme platformudur ve geliştiricilerin faturalandırma ve ödeme özelliklerini minimum kodla entegre etmesine olanak tanıyan bir yapı sunar
  • Stateless mimari sayesinde subscriptions tablosu veya customer_id yönetimi olmadan, kendi kullanıcı ID’nizle ödeme durumunu sorgulayabilirsiniz
  • Full-Stack SDK sunar; backend’de flowgladServer.getBilling(), frontend’de ise useBilling() hook’u ile müşteri durumu gerçek zamanlı yansıtılır
  • Test modunda fiyat modelini deneyebilir ve tek tıklamayla production’a yansıtabilir, uygulamayı yeniden deploy etmeden plan değişikliği yapabilirsiniz
  • Ödeme entegrasyonunun karmaşıklığını ve maliyetini azaltarak geliştirici deneyimini (DX) iyileştirir ve farklı ödeme sağlayıcılarıyla bağlantıyı tek bir entegrasyona genişletecek temel sunar

Başlıca özellikler

  • Stateless yapı sayesinde webhook, abonelik tablosu, müşteri ID’si ve environment variable yönetimi gerekmez
    • Fiyat ve özellik eşlemesini manuel olarak yönetmeye gerek kalmadan bunu doğrudan Flowglad üstlenir
  • Tek doğruluk kaynağı (Single Source of Truth) olarak müşterinin en güncel faturalandırma durumu, özellik erişim yetkileri ve kullanım kredileri sorgulanabilir
  • Özelleştirilmiş ID tabanlı erişim desteğiyle mevcut kimlik doğrulama sisteminizdeki kullanıcı veya organizasyon ID’leriyle müşteri durumu sorgulanabilir
  • Full-Stack SDK sağlar
    • Backend’de flowgladServer.getBilling() çağrılır
    • React frontend’de useBilling() hook’u ile ödeme durumu gerçek zamanlı yansıtılır
  • Esnek fiyat modeli yönetimi
    • Test modunda yeni planları deneyip tek tıklamayla production’a alabilirsiniz
    • Uygulamayı yeniden deploy etmeden plan değişimi yapılabilir

Kurulum ve entegrasyon

  • Proje türüne göre @flowglad/nextjs, @flowglad/react, @flowglad/express, @flowglad/server paketlerini kurun
  • Next.js entegrasyon örneği
    • Kendi müşteri ID’nizi ileterek bir FlowgladServer instance’ı oluşturun
    • API route’larında nextRouteHandler kullanarak Flowglad ile güvenli iletişim kurun
    • Kök layout’a FlowgladProvider ekleyerek frontend’de ödeme durumunun otomatik yüklenmesini sağlayın
  • B2C için user.id, B2B için organization.id veya team.id müşteri ID’si olarak kullanılır
  • Flowglad, ayrı bir müşteri ID’si yönetimi ya da kimlik doğrulama sisteminde değişiklik gerektirmez

Frontend örneği

  • useBilling() hook’u ile özellik erişimi (checkFeatureAccess) ve kullanım (checkUsageBalance) kontrol edilir
  • Özellik erişimi kısıtlıysa yükseltme yönlendirme mesajı gösterilir
  • Kullanım yetersizse createCheckoutSession ile ödeme oturumu oluşturulur

Backend örneği

  • Sunucu tarafında flowglad(user.id).getBilling() ile özellik erişimi ve kullanım kontrol edilir
    • Örnek: fast_generations özelliğine erişim olup olmadığına göre işlem akışı dallandırılır
    • Örnek: chat_messages kullanım kredisi yetersizse hata oluşturulur

Başlarken

  • Dashboard üzerinden şablon kullanarak bir fiyat modeli oluşturun
  • Sunulan şablon türleri
    • Kullanım limiti + abonelik hibriti (Cursor benzeri)
    • Sınırsız kullanım (ChatGPT tüketici tipi)
    • Katmanlı erişim + kullanım kredisi (Midjourney benzeri)
    • Özellik kilitlemeli abonelik (Linear benzeri)
  • Gerekirse şablon kullanmadan da doğrudan model oluşturabilirsiniz

Teknoloji yığını

  • Next.js, tRPC, React.js, Tailwind CSS, Drizzle ORM, Zod, Trigger.dev, Supabase, Better Auth tabanlıdır

Proje hedefi

  • Son 15 yılda geliştirme yığını çeşitlenmiş olsa da ödeme alanında neredeyse hiç yenilik olmadı
  • Çoğu ödeme hizmetinde hesap kurulumu için bile satış ekibiyle görüşmek gerekir ve self-service ödeme seçenekleri yetersizdir
  • Bunun sonucu olarak ödemeye dair geliştirici deneyimi (DX) ve maliyet iyileştirmeleri durağan kaldı
  • Flowglad, ödeme entegrasyonu ve bakım süresini en aza indirmeyi, tek bir entegrasyonla birden fazla ödeme sağlayıcısını kullanmayı hedefler
  • Yapay zekanın yaygınlaşmasıyla daha karmaşık hale gelen startup faturalandırma ortamında geliştirici dostu bir ödeme katmanı kurmayı amaçlar

1 yorum

 
GN⁺ 2025-11-27
Hacker News görüşleri
  • Bunun neden A) ‘payment processor’ olarak adlandırıldığını pek anlamıyorum
    Aslında ödemeyi doğrudan işlemiyorken böyle denmesi tuhaf geliyor
    Bir de B) ‘open source’ deniyor ama her şeyin SaaS üzerinden çalıştığı ve verilerin de onların DB’sinde tutulduğu anlaşılıyor
    Özellik kapıları, kullanım kredileri, ödeme şemaları gibi esnek bir sistem kurmaya çalıştıkları için derdi anlıyorum ama başlığın vaat ettiği kadar somut bir şey sunduğunu hissetmiyorum

    • Katıldığınız için teşekkürler; bunu daha iyi nasıl çözebileceğimiz konusunda görüş duymak isterim
      Open source tarafında SaaS kısmı AGPLv3, geri kalanı ise MIT lisansı altında
      ‘processor’ ifadesini kullanmamızın sebebi, Stripe Connect üzerinden ödeme işlesek de bunun sadece bir faturalama SaaS’ı olmadığını, ödeme işleme tarafını da kapsadığını netleştirmek istememizdi
      Örneğin biz de mağazayla birlikte chargeback sorununu dert ediyoruz. Sadece Stripe anahtarını kullanan bir SaaS’tan farklı olarak, bizim yapımızda chargeback Stripe’taki gibi bizim için de doğrudan bir mesele oluyor
    • Lisans dosyasında hem MIT hem de AGPL belirtilmiş
  • Bu ürünün bazı şeyleri kolaylaştırdığı doğru ama gerçekten daha iyi olup olmadığından emin değilim
    Müşterinin abonelik durumu gibi şeyleri her kontrol edişte Flowglad sunucusuna API isteği atmak gerekiyorsa tepki süresi düşebilir
    Sık erişilen veriler cache’lenebilir ama o zaman da bu katmanın anlamı azalıyor
    Stripe entegrasyonu zahmetli olsa da yerelde hiçbir şey saklamayacaksanız Stripe API’sini doğrudan kullanmak daha iyi olabilir diye düşünüyorum
    Benim için DB’de cache’lenmiş durum tutmak çok daha rahattı — çünkü karmaşık sorguları da doğrudan çalıştırabiliyordum
    Bu yapıda Flowglad’in ihtiyaç duyulan API’leri sunmasını ummak gerekiyor; aksi halde müşteri sayısı kadar API isteği atmanız gerekebilir

    • Doğru
      Mağaza tarafında daha fazla veri saklanabilmesini sağlarken, bizim rafine ettiğimiz veri modelinden ve SDK kullanılabilirliğinden yararlanmaya devam etmeyi planlıyoruz
      Stripe API’sini doğrudan kullansanız bile price id, plan, feature, customer id eşlemesini kendiniz yönetmeniz gerekiyor; biz bu tekrar eden işleri ortadan kaldırmak istiyoruz
      Stripe yazma ağırlıklı bir sistem ve gerçek zamanlı okuma katmanı olarak kullanılmasını önermiyor (Stripe rate limits belgesi)
      Hedefimiz, Shopify’ın DTC markalarına sunduğuna benzer şekilde geliştiricilere birleşik ödeme + değer aktarımı deneyimi sunmak
  • Başta yanlış anlamıştım ama yapı şuymuş: SDK ve kod açık kaynak, fakat gerçek faturalama verileri Flowglad sunucularına gönderiliyor; yani veriye doğrudan sahip olamıyorsunuz gibi görünüyor

    • Evet, başlık birçok açıdan yanıltıcı bir ifade
  • Beta çıkışı kutlarım!
    Ben de benzer bir sorun yaşadığım için, Flowglad’e benzer DX’e sahip bir Stripe entegrasyon kütüphanesi yaptım (özellikleri daha az kapsamlı olsa da)
    Bunu neden yaptığımı anlatan bir blog yazısı da var
    Temel fark, nihai faturalama bilgisinin nerede tutulduğu — biz DB şeması ve webhook handler’ları birlikte veriyoruz, böylece kayıtlar yerel DB’ye yazılıyor
    Belki faydalı olur diye, yaptığımız MIT açık kaynak kütüphaneyi de önereyim

  • Beta çıkışı kutlu olsun, etkileyici bir ürün; entegrasyonu değerlendiriyorum
    Ama neden React bağımlılığı gerektiğini merak ediyorum
    React olmadan istenen UI’ı kurmanın bir yolu yok muydu?
    Biz Svelte tabanlıyız, bu yüzden böyle bir kütüphane için React’i içeri çekmek rahatsız edici

    • İyi bir nokta
      React ile başlamamızın sebebi, en iyi bildiğimiz alanın ve topluluğumuzun orada olmasıydı
      React’e takılıp kalmış değiliz; Svelte ve Vue desteği de yakında eklenecek
      Veri modeli ve akışlar oturduğunda SDK’yı diğer framework’lere port etmeyi planlıyoruz
    • Svelte’i seçtiyseniz bu tür durumlarla sık karşılaşırsınız
      React kullanıcı tabanı 10 ila 50 kat daha büyük, dolayısıyla bu tür rahatsızlıklardan kaçınmak zor
      Ama React bir framework değil, component rendering layer; iyi kapsüllenmiş bir harici kütüphane ise Svelte içinde de sorunsuz kullanılabilir
  • Landing page tasarımı gerçekten çok güzel yapılmış
    Olumsuz görünmek istemedim; sadece Stripe üzerine kurulmuş olmasına üzüldüm

    • Benim de hoşuma gitti, zed.dev’i hatırlatıyor
    • Teşekkürler! Aslında siteyi bilinçli olarak tek sayfa tuttuk
      Çünkü son 1 yılı faturalama motoru, veri modeli ve SDK geliştirmeye harcadık
  • webhook’ların popüler olmasının sebebi basit, güvenilir ve işe yarıyor olmaları
    Ama bunu kullanınca kullanım miktarı, abonelik katmanı, iptal gibi şeyleri takip etmek için ayrı bir altyapı kurmanız gerekebilir

    • webhook’lar asenkron işler veya event-driven domain’ler için uygundur ama ödeme ya da yetkilendirme gibi alanlarda en iyi model olmayabilir
      İdeal bir dünyada para hareket ettiğinde müşterinin erişebileceği özellikler de buna göre otomatik belirlenmelidir
      Shopify gibi sistemler buna örnek — webhook var ama asıl entegrasyon noktası o değil
      Ödeme webhook’ları aslında karmaşık domain modelleme problemini aşmak için geliştirilmiş hackvari bir çözüm
  • Zaten GNU Taler diye bir proje var ve bunu gerçek uzmanlar yaptı
    https://www.taler.net/en/
    Gizlilik odaklı çevrimiçi ödeme, kayıtsız ödeme, dolandırıcılığı önleyen tasarım, kendi altyapınızda çalıştırabilme ve özgür yazılım olması öne çıkan özellikleri

  • Mağazanın banka hesabı tarafında bunun nasıl çalıştığını merak ediyorum
    Bu repo dışında başka bir şeye ihtiyaç var mı?

    • Evet, henüz acquiring bank partnerliği tarafını self-host etmenin bir yolu yok
      Şu anda mağaza hesabı kurulumu Stripe Connect üzerinden yapılıyor
      Stripe’ın mağaza ödemelerini desteklediği bir ülkede kayıtlı tüzel kişilikseniz hemen kullanabilirsiniz
      Uzun vadede ödeme tarafına daha derin entegre olmayı planlıyoruz
    • Hâlâ bir ödeme sağlayıcısına ya da mağaza hesabına ihtiyacınız var
      Yapısal olarak diğer gateway servislerine benziyor ama aracı ücreti eklendiği için işlem başına maliyet daha yüksek olabilir
  • Stripe webhook event’lerinin 250’den fazla olduğu ve bunun karmaşık olduğu söylenmiş ama tüm event’leri dinlemek gerekmiyor

    • Ama uygulamanızın iş yaşam döngüsü için hangi event’lerin önemli olduğuna kendiniz karar vermeniz gerekiyor
      Örneğin charge.succeeded, payment_intent.succeeded, customer.subscription.created event’lerini nasıl işleyeceğinizi ve tekrarları nasıl önleyeceğinizi düşünmelisiniz
      Stripe’ı düzgün entegre etmek için bu tür ayrıntılara hâkim olmak gerekiyor
    • Stripe, UI’dan API’ye kadar aşırı ölçüde genişlemiş durumda
      10 yıl önce 20 dakikada entegre etmiştim, yakın zamanda ise bütün günümü aldı