Supabase Bağlayıcısı

Müşteri etkileşim otomasyonu için veritabanı kayıtlarını, kullanıcı kimlik doğrulama verilerini, dosya depolama olaylarını ve gerçek zamanlı değişiklikleri senkronize etmek üzere Supabase projenizi bağlayın.

Genel Bakış

ÖzellikDeğer
PlatformSupabase
KategoriVeritabanı ve Arka Uç
Kurulum KarmaşıklığıKolay
Resmi EntegrasyonEvet
Senkronize Edilen VeriKullanıcılar, Tablolar, Depolama, Olaylar
Kullanılabilir Yetenekler11
API TürüREST (PostgREST) + Gerçek Zamanlı WebSocket
Resmi Belgelersupabase.com/docs

Özellikler

  • Otomatik oluşturulan REST API, PostgREST aracılığıyla herhangi bir Postgres tablosunda CRUD işlemleri, kod gerektirmez
  • Kimlik doğrulama kullanıcı senkronizasyonu, Supabase Auth kullanıcılarını (e-posta, telefon, sosyal oturumlar) etkileşim platformunuza senkronize edin
  • Gerçek zamanlı abonelikler, Herhangi bir tablodaki INSERT, UPDATE, DELETE olaylarını gerçek zamanlı olarak dinleyin
  • Satır Düzeyi Güvenlik, Tüm API erişimi, güvenli çok kiracılı veri için Postgres RLS politikalarına uyar
  • Depolama entegrasyonu, Dosya yüklemelerini izleyin ve Depolama kovaları arasında varlıkları yönetin
  • Edge Functions, Özel mantık ve webhook’lar için sunucusuz Deno işlevleri çağırın
  • Tam metin arama, API aracılığıyla Postgres tam metin arama özelliklerinden yararlanın

Ön Koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  1. Bir Supabase projesi (app.supabase.com)
  2. Projenizin API URL’si ve API anahtarları (Settings → API bölümünde bulunur)
  3. API erişimi olan bir Tajo hesabı

API Anahtarları

Supabase iki anahtar sağlar: anon (herkese açık, RLS’ye uyar) ve service_role (RLS’yi atlar, yönetici erişimi). Sunucu tarafı entegrasyonlar için service_role, istemci tarafı için anon kullanın.

Kimlik Doğrulama

Supabase API anahtarı kimlik doğrulaması kullanır. Her istek apikey başlığını gerektirir ve kullanıcı kapsamlı erişim için isteğe bağlı olarak Authorization bearer belirteci gerektirir.

Terminal window
# anon anahtarı kullanma (RLS'ye uyar)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_ANON_KEY>" \
-H "Authorization: Bearer <SUPABASE_ANON_KEY>"
# service_role anahtarı kullanma (RLS'yi atlar)
curl 'https://<project_ref>.supabase.co/rest/v1/customers' \
-H "apikey: <SUPABASE_SERVICE_ROLE_KEY>" \
-H "Authorization: Bearer <SUPABASE_SERVICE_ROLE_KEY>"

Yapılandırma

Temel Kurulum

connectors:
supabase:
enabled: true
project_url: "https://xyzcompany.supabase.co"
api_key: "${SUPABASE_SERVICE_ROLE_KEY}"
# Veri senkronizasyon seçenekleri
sync:
users: true
tables:
- customers
- orders
- products
storage: true
realtime: true
# Supabase Auth kullanıcılarını kişilere eşle
user_mapping:
email: email
phone: SMS
user_metadata.full_name: FIRSTNAME
created_at: SIGNUP_DATE

Alan Eşleştirme

Supabase tablo sütunlarını etkileşim platformu özniteliklerine eşleyin:

Varsayılan Kullanıcı Eşleştirmeleri

Parameter Type Description
email required
string

Supabase Auth'tan kullanıcı e-postası (benzersiz tanımlayıcı)

phone optional
string

SMS/WhatsApp etkileşimi için telefon numarası

user_metadata.full_name optional
string

Auth kullanıcı meta verilerinden görünen ad

user_metadata.avatar_url optional
string

Profil resmi URL'si

created_at optional
timestamp

Hesap oluşturma zaman damgası

last_sign_in_at optional
timestamp

Etkileşim puanlaması için en son oturum açma

app_metadata.provider optional
string

Kimlik doğrulama sağlayıcısı (email, google, github vb.)

confirmed_at optional
timestamp

E-posta onay zaman damgası

Özel Tablo Eşleştirme

table_mapping:
customers:
# Sütun → Öznitelik eşleştirmesi
email: email
full_name: FIRSTNAME
company: COMPANY
plan: SUBSCRIPTION_PLAN
mrr: MONTHLY_REVENUE
created_at: SIGNUP_DATE
orders:
# Olay olarak izle
sync_as: events
event_name: "order_placed"
properties:
total: amount
status: order_status
items: line_items

API Uç Noktaları

Supabase REST API’si, veritabanı şemanızdan https://<ref>.supabase.co/rest/v1/ adresinde otomatik olarak oluşturulur.

Uç NoktaYöntemAçıklama
/rest/v1/{table}GETFiltreleme, sıralama, sayfalama ile satırları sorgula
/rest/v1/{table}POSTSatır ekle (toplu ve upsert destekler)
/rest/v1/{table}PATCHFiltrelerle eşleşen satırları güncelle
/rest/v1/{table}DELETEFiltrelerle eşleşen satırları sil
/rest/v1/rpc/{function}POSTBir Postgres fonksiyonu çağır
/auth/v1/signupPOSTYeni kullanıcı oluştur
/auth/v1/token?grant_type=passwordPOSTParolayla oturum aç
/auth/v1/userGETMevcut kullanıcıyı al
/auth/v1/admin/usersGETTüm kullanıcıları listele (service_role)
/storage/v1/object/{bucket}/{path}POSTDosya yükle
/storage/v1/object/list/{bucket}POSTKovadaki dosyaları listele
/functions/v1/{function_name}POSTEdge Function çağır

Filtreleme Operatörleri

OperatörAçıklamaÖrnek
eqEşittir?status=eq.active
neqEşit değildir?status=neq.deleted
gt, gteBüyüktür?amount=gt.100
lt, lteKüçüktür?created_at=lt.2024-01-01
like, ilikeDesen eşleştirme?name=ilike.%john%
inDizide?status=in.(active,trial)
isNull kontrolü?deleted_at=is.null

Olaylar

Kimlik Doğrulama Olayları

OlayTetikleyiciKullanım Durumu
user.signed_upYeni kullanıcı kaydıHoş geldiniz serisi
user.signed_inKullanıcı oturumuAktivite takibi
user.updatedProfil değişiklikleriVeri senkronizasyonu
user.deletedHesap silmeTemizleme iş akışları

Veritabanı Olayları (Gerçek Zamanlı)

OlayTetikleyiciKullanım Durumu
INSERTYeni satır eklendiYeni sipariş/müşteri bildirimleri
UPDATESatır değiştirildiDurum değişiklik iş akışları
DELETESatır kaldırıldıKayıp tespiti

Webhook Olayları

OlayTetikleyiciKullanım Durumu
auth.user.createdWebhook aracılığıyla kullanıcı kaydıOnboarding tetikleme
storage.object.createdDosya yüklendiVarlık işleme

Kod Örnekleri

Bağlayıcıyı Başlatma

import { TajoClient } from '@tajo/sdk';
import { createClient } from '@supabase/supabase-js';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
});
// Supabase projesini bağla
await tajo.connectors.connect('supabase', {
projectUrl: process.env.SUPABASE_URL,
serviceRoleKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
});

Kullanıcıları Kişilere Senkronize Etme

// Tüm Supabase Auth kullanıcılarını kişi olarak senkronize et
await tajo.connectors.sync('supabase', {
type: 'full',
resources: ['users'],
});
// Artımlı senkronizasyon (yalnızca yeni/değişen kullanıcılar)
await tajo.connectors.sync('supabase', {
type: 'incremental',
resources: ['users'],
since: '2024-01-01T00:00:00Z',
});

Gerçek Zamanlı Değişiklikleri Dinleme

// Etkileşim tetikleyicileri için yeni siparişlere abone ol
const supabase = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_SERVICE_ROLE_KEY
);
supabase
.channel('orders')
.on('postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'orders' },
async (payload) => {
// Tajo'ya olay olarak ilet
await tajo.events.track({
email: payload.new.customer_email,
event: 'order_placed',
properties: {
order_id: payload.new.id,
total: payload.new.total,
items: payload.new.line_items,
},
});
}
)
.subscribe();

Sorgulama ve Segmentleme

// Hedefli kampanyalar için müşterileri plana göre sorgula
const { data: proUsers } = await supabase
.from('customers')
.select('email, full_name, plan, mrr')
.eq('plan', 'pro')
.gt('mrr', 100)
.order('mrr', { ascending: false });
// Kampanya hedefleme için bir Brevo listesine senkronize et
await tajo.lists.addContacts(PRO_LIST_ID, proUsers);

Hız Sınırları

API Hız Sınırları

Supabase hız sınırları planınıza bağlıdır. Ücretsiz katman: dakikada 500 istek. Pro: saniyede 1.000 istek. Kurumsal sınırlar için Supabase ile iletişime geçin.

PlanHız SınırıGerçek Zamanlı Bağlantılar
Ücretsiz500 istek/dk200 eşzamanlı
Pro1.000 istek/sn500 eşzamanlı
Team2.000 istek/sn1.000 eşzamanlı
EnterpriseÖzelÖzel

Sorun Giderme

Yaygın Sorunlar

SorunNedenÇözüm
401 UnauthorizedGeçersiz veya süresi dolmuş API anahtarıSupabase Dashboard → Settings → API bölümünden API anahtarlarını kontrol edin
403 ForbiddenRLS politikası erişimi engelliyorYönetici işlemleri için service_role anahtarını kullanın veya RLS politikalarını kontrol edin
Gerçek zamanlı olay yokTablo için Realtime etkin değilDatabase → Replication → tabloyu yayına ekleyin
Boş sorgu sonuçlarıRLS tüm satırları filtreliyorRLS politikalarının kimliği doğrulanmış rolün okumasına izin verdiğini doğrulayın
Depolama yüklemesi başarısızKova politikalarıDepolama kovasının herkese açık veya doğru RLS politikalarına sahip olduğunu kontrol edin

Hata Ayıklama Modu

connectors:
supabase:
debug: true
log_level: verbose
log_queries: true
log_realtime: true

Bağlantı Testi

Terminal window
tajo connectors test supabase
# ✓ API bağlantısı başarılı
# ✓ Kimlik doğrulama uç noktası erişilebilir
# ✓ Tablolar okunabilir (12 tablo bulundu)
# ✓ Depolama erişilebilir (3 kova)
# ✓ Gerçek zamanlı bağlantı kuruldu
# ✓ Edge Functions mevcut (4 işlev)

En İyi Uygulamalar

  1. service_role anahtarını yalnızca sunucu tarafında kullanın, Asla istemci kodunda ifşa etmeyin
  2. Tüm tablolarda RLS’yi etkinleştirin, service_role ile bile, derinlemesine savunma için RLS ile tasarlayın
  3. Olay odaklı senkronizasyon için Realtime kullanın, Değişiklikleri yoklamaktan daha verimlidir
  4. Toplu işlemler, Yüksek hacimli işlemler için toplu eklemeler ve in filtresini kullanın
  5. Kullanıcı meta verilerini eşleyin, Kayıt sırasında etkileşimle ilgili alanları user_metadata içinde saklayın
  6. Webhook’lar için Edge Functions kullanın, Düşük gecikmeli işleme için gelen webhook’ları Supabase Edge Functions ile işleyin

Güvenlik

  • API Anahtarı Kimlik Doğrulaması, Tüm istekler geçerli API anahtarları gerektirir
  • Satır Düzeyi Güvenlik (RLS), Satır başına Postgres yerel erişim kontrolü
  • JWT Doğrulaması, Kimlik doğrulama belirteçleri her istekte doğrulanan imzalı JWT’lerdir
  • SSL/TLS, Tüm bağlantılar aktarımda şifrelenir
  • SOC 2 Type II, Supabase SOC 2 uyumludur
  • Ağ Kısıtlamaları, Ücretli planlarda isteğe bağlı IP izin verme

İlgili Kaynaklar

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Asistan

Merhaba! Belgeler hakkında her şeyi sorabilirsiniz.