← Blog
30 Haziran 2026· otomatik üretildi

Supabase ile Hızlı Backend: Veritabanı ve Kimlik Doğrulama

Supabase, PostgreSQL tabanlı açık kaynak yapısıyla veritabanı ve kimlik doğrulamayı dakikalar içinde kurmanı sağlıyor. İşte pratik bir başlangıç rehberi.

#Supabase#Backend#PostgreSQL#Kimlik Doğrulama

Bir proje fikri aklına düştüğünde en can sıkıcı kısım genellikle backend'i ayağa kaldırmaktır. Veritabanı kur, API yaz, kimlik doğrulama ekle, token yönet… Başlamadan yoruluyorsun. İşte tam burada Supabase devreye giriyor.

Supabase, Firebase'e açık kaynak alternatif olarak konumlandırılan, ama altında gerçek bir PostgreSQL veritabanı çalıştıran bir Backend-as-a-Service (BaaS) platformu. Hem ücretsiz katmanı hem de self-hosted seçeneğiyle hem bireysel geliştiricilere hem de ekiplere hitap ediyor.

Neden Supabase?

Piyasada onlarca BaaS çözümü var. Supabase'i öne çıkaran birkaç temel nokta:

  • Gerçek PostgreSQL: Vendor lock-in yok. Veriyi istediğin zaman taşıyabilirsin.
  • Otomatik REST ve GraphQL API: Tablo oluşturduğun anda API hazır oluyor.
  • Realtime: Değişiklikleri WebSocket üzerinden anında dinleyebiliyorsun.
  • Row Level Security (RLS): Veri erişim kurallarını veritabanı katmanında tanımlıyorsun.
  • Açık kaynak: Kodun tamamı GitHub'da; istersen kendi sunucunda çalıştırırsın.

Projeyi Kurmak

app.supabase.com adresinden ücretsiz bir proje oluşturmak yeterli. Birkaç saniye içinde sana bir PostgreSQL instance, bir API anahtarı ve bir dashboard sunuluyor.

JavaScript/TypeScript projelerinde istemci kütüphanesini eklemek tek satır:


npm install @supabase/supabase-js

Ardından bağlantıyı başlatıyorsun:


import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  process.env.SUPABASE_URL!,
  process.env.SUPABASE_ANON_KEY!
)

Veritabanı: Tablo Oluştur, Veriyi Çek

Dashboard'daki Table Editor ya da doğrudan SQL editörü ile tablonu oluşturuyorsun. Mesela basit bir posts tablosu:


create table posts (
  id uuid primary key default gen_random_uuid(),
  title text not null,
  content text,
  created_at timestamptz default now()
);

Tabloyu oluşturduktan sonra veri çekmek son derece sade:


const { data, error } = await supabase
  .from('posts')
  .select('*')
  .order('created_at', { ascending: false })

Filtreleme, sayfalama, join işlemleri de aynı zincirleme söz dizimiyle yapılabiliyor. Ayrı bir REST katmanı yazman gerekmiyor.

Kimlik Doğrulama: Dakikalar İçinde Hazır

Supabase Auth, e-posta/şifre, magic link, OAuth (Google, GitHub, Discord vb.) ve telefon numarası doğrulamayı destekliyor. Konfigurasyon tamamen dashboard üzerinden yapılıyor.

Kullanıcı kaydı için:


const { data, error } = await supabase.auth.signUp({
  email: 'kullanici@ornek.com',
  password: 'güçlü-şifre'
})

Giriş yapmak için:


const { data, error } = await supabase.auth.signInWithPassword({
  email: 'kullanici@ornek.com',
  password: 'güçlü-şifre'
})

Oturum yönetimi, token yenileme ve kullanıcı state'i otomatik olarak kütüphane tarafından idare ediliyor.

Row Level Security ile Veriyi Güvene Al

Kimlik doğrulama kurulduktan sonra en kritik adım RLS politikalarını tanımlamak. Örneğin kullanıcıların yalnızca kendi gönderilerini görmesini sağlamak için:


alter table posts enable row level security;

create policy "Kullanıcı kendi gönderilerini görür"
  on posts for select
  using (auth.uid() = user_id);

Bu sayede API anahtarını bilen biri bile başkasının verisine erişemiyor; güvenlik mantığı uygulama kodundan değil, veritabanından yönetiliyor.

Son Söz

Supabase, "bir şeyi hızlıca ayağa kaldır ve işe yara" felsefesini PostgreSQL'in gücüyle birleştiriyor. Prototip aşamasında hız sağlarken, ölçeklenme ihtiyacı doğduğunda da sizi sıkıştırmıyor. Eğer her yeni projede aynı auth ve CRUD altyapısını tekrar tekrar yazmaktan sıkıldıysanız, Supabase'e bir şans verin; ilk tabloyu oluşturduğunuz an ne demek istediğimi anlayacaksınız.