Supabase’i tanıyalım

Supabase, Firebase alternatifi olan bir backend servisi. Firebase alternatifi olarak öne çıkıyor olsa da veritabanı yapısı olarak NoSQL yerine SQL tercih ediyor. Birçok özelliği Firebase’den daha gelişmiş olan Supabase’in yapabildiği birçok şey var. Authentication, Database ve Storage hizmetlerinin yer aldığı serviste resmi Javascript client kütüphanesi barındırıyor. Fakat bir Flutter developer olarak ihtiyacım olan Dart paketi idi ve ekip tarafından geliştirilen Supabase Flutter kütüphanesini buraya bırakıyorum. 🙂

Supabase sizin için neler yapabilir?

  • Veritabanı değişimlerini dinleyebilir
  • GraphQL gibi tablolara query yollayabilir, pagination sağlayabilir ve karmaşık iç içe ilişkileri filtreleyebilir
  • Veritabanına UI Dashboard üzerinden müdahale
  • Kullanıcıları düzenleme ve rollerini düzenleme

gibi, Firebase için karmaşık gelen şeyleri yapabiliyor. Supabase, PostgreSQL kullandığı için kompleks query işleyebiliyor. Auth ile Google, Facebook ve Github gibi platformların OAuth sağlayıcılarını kullanılmasını sağlıyor. Storage ile de her türlü medyayı klasörleme imkanı sunarak kaydetmenizi sağlıyor.

Böyle bir servis her ne kadar Firebase’e çok yakın gözükse de kullandığı Postgre yapısıyla beraber aslında Firebase ile kökten itibaren ayrılıyor. Hep beraber bu yazının devamında Supabase ile bir Flutter uygulaması nasıl entegre edilir bunu göreceğiz ve Firebase’i daha önce kullanmış birçok geliştirici daha bu kodları yazarken ne kadar basit olduğunu görmüş olacak.

Supabase’i kullanalım

Supabase üzerinden kayıt olalım. Kayıt olmak için Github hesabı gerekmektedir. Kayıt olduktan sonra da bir proje oluşturalım. Proje oluşturduktan sonra sol tarafta ayarlardan API kısmına gidelim.

supabase menu

API sekmesine tıkladıktan sonra conifg bilgilerimizi uygulamamız içerisine kaydedelim.

supabase config

URL kısmında yazan adresi supabaseurl, API keys içinde public kısmındaki kodu da supabasekey değişkenlerine atalım.

Bir veritabanına kullanıcı rol yönetimi ve kişisel uzay olmadan veriler yazdıralım. Yani basit CRUD operasyonları nasıl yapılır buna göz atalım.

Insert / Create işlemi

insertUser(String code, String ad, String soyad, String tarih) async {
  var client = SupabaseClient(supabaseurl, supabasekey);
  var response = await client.from('kullanicilar').insert([
    {'code': code, 'soyad': soyad, 'tarih': tarih, 'ad': ad}
  ]).execute();
}

Read işlemi

// tum kullanicilar icin
readUsers() async {
  var client = SupabaseClient(supabaseurl, supabasekey);
  var response = await client.from('kullanicilar').select().execute();
}

// tek bir kullanici icin sorgu
readSingleReport(String code) async {
  var client = SupabaseClient(supabaseurl, supabasekey);
  var response =
      await client.from('kullanicilar').select().eq('code', code).execute();
}
// code field'ı code degiskenindeki veriye esitse sonuc dondurur

Delete işlemi

deleteUser(String code) async {
  var client = SupabaseClient(supabaseurl, supabasekey);
  var response =
      await client.from('kullanicilar').delete().eq('code', code).execute();
}
// code field'ı code degiskenindeki veriye esitse satir silinir

Update işlemi

updateUser(String code, String ad) async {
  var client = SupabaseClient(supabaseurl, supabasekey);
  var response = await client
      .from('users')
      .update({'ad': ad}).match({'code': code}).execute();
}
// code field'ı code değişkenindeki veriye esitse satirdaki field verilen bilgiye göre update edilir.

Gördüğünüz üzere CRUD operasyonlarını gerçekleştirmek çok basit! Aynı zamanda Supabase’in entegrasyonu Firebase’e nazaran çok daha kolay. Hızlıca proje geliştirmek için ideal bir servis.



Supabase fiyatlandırma politikası

Supabase, az veri ve çok sorgu gerektiren uygulamalar için fazlasıyla uygun. Firebase üzerinde belirli bir seviyeden sonra kullanılan her network isteği için bir ücret çıkarırken API sorgusu Supabase üzerinde ücretsiz. Limitsiz şekilde API isteği yapabilmenizin yanı sıra aylık 25 dolara Firebase’de elde edeceğiniz kullanım hakkından daha fazlasını elde ediyorsunuz.

Firebase’i kullanan geliştiricilerin en büyük korkulu rüyası olan kötü kod yüzünden fazladan binlerce API isteğinin işleme alınması ve faturaya yansıtılması konusuna Supabase’in free tier kullanıcılar için sınırsız API isteği hakkı tanıması, dikkate alınması gereken en büyük özellik benim gözümde. Supabase’i buradan inceleyebilir ve siz de bir sonraki projenizi hızlıca geliştirmeye başlayabilirsiniz.


Okuyucuya Not

Merhaba okuyucu! Blogum son zamanlarda yüksek trafik almaya başladı ve bu durumdan memnunum fakat aynı zamanda siz ziyaretçileri tatmin edememekten endişeliyim. 🙂 Eğer yazılarım ile ilgili bir tavsiyeniz olursa mail adresimden bana ulaşabilir veya Twitter üzerinden direct message gönderebilirsiniz. Github’ta örnek olarak yaptığım projelere göz atmak isterseniz de bu linki kullanabilirsiniz. Umarım bu ziyaretinizle size bir şeyler katabilmişimdir.

Sağlıcakla kalın!

Tags: