ctahosting

Mobil backend · BaaS

Mobil uygulama sunucusu: hazır backend ile hemen başlayın

Uygulamanızın arka ucunu sıfırdan yazmayın. Üyelik sistemi, PostgreSQL veritabanı, otomatik API, dosya depolama ve anlık veri tek projede hazır gelsin; siz ekranlara ve ürününüze odaklanın.

  • PostgreSQL ve otomatik REST API
  • Üyelik, giriş ve satır bazlı yetki (RLS)
  • Sabit aylık fiyat, TL fatura
Paketleri inceleyinNeler hazır?

Aylık 69,46 ₺’dan başlayan fiyatlarla + KDV

Hazır modüller

Mobil uygulamanız için gereken backend tek projede

Her yeni uygulamada aynı işler baştan yazılıyor: kayıt, giriş, veritabanı, API, dosya yükleme. Bunlar hazır geliyor; uygulamanız proje kimliği ve anahtarıyla bağlanıyor ve çalışıyor.

  • Authentication

    Üyelik, giriş ve kayıt: e-posta ve şifre, telefona tek kullanımlık kod, Google ve Apple ile giriş. Oturum ve yenileme belirteçleri hazır.

  • Database

    Her projeye ayrılmış PostgreSQL veritabanı. Tablo, ilişki, dizin ve görünümleri panelden ya da SQL ile oluşturun.

  • API

    Veritabanınıza otomatik REST API: tablo eklediğiniz anda okuma, yazma, süzme ve sayfalama uçları hazır.

  • Storage

    Fotoğraf, video ve dosya yükleme. Klasör (bucket) bazlı erişim kuralları, büyük dosyalar için parçalı yükleme.

  • Realtime

    Anlık veri güncellemeleri: tablodaki değişiklik uygulamaya aynı anda düşer. Sohbet, bildirim akışı ve canlı panolar için.

  • Edge Functions

    Backend kodlarınızı çalıştırın: webhook, e-posta gönderimi, üçüncü taraf API çağrıları ve özel iş kuralları.

  • Security (RLS)

    Kullanıcı bazlı veri erişim yetkileri: satır düzeyi güvenlik kurallarıyla her kullanıcı yalnız izin verilen satırları görür.

  • Yedek ve izleme

    Veritabanının haftalık yedeği, geri yükleme ve istek / hata kayıtları. Sunucu bakımı ve güncellemeler bizde.

Paketler

Mobil uygulama sunucusu paketleri

Her pakette bütün modüller açık: Authentication, Database, API, Storage, Realtime, Edge Functions ve RLS. Paketler kaynak miktarıyla ayrılıyor.

  • Başlangıç

    İlk uygulama ve MVP için

    %33 indirim149,10 ₺

    99,23 ₺/ay + KDV

    12 ay için 1.190,76 ₺ peşin

    Yenileme: 99,23 ₺/ay

    • 1 GB SQL alanı (PostgreSQL)
    • 1 SQL veritabanı (proje)
    • 1 GB dosya depolama
    • 5.000 aylık aktif kullanıcı
    • 100 eş zamanlı realtime bağlantı
    • Ayda 250.000 edge function çağrısı
    • Haftalık yedek
    • Ücretsiz Mağazalarda Yayınlama
    • Bütün modüller dahil
  • En çok tercih edilen

    Profesyonel

    Büyüyen uygulamalar için

    %29 indirim348,56 ₺

    248,83 ₺/ay + KDV

    12 ay için 2.985,96 ₺ peşin

    Yenileme: 248,83 ₺/ay

    • 3 GB SQL alanı (PostgreSQL)
    • 3 SQL veritabanı (proje)
    • 5 GB dosya depolama
    • 25.000 aylık aktif kullanıcı
    • 500 eş zamanlı realtime bağlantı
    • Ayda 1.000.000 edge function çağrısı
    • Haftalık yedek
    • Ücretsiz .app alan adı (1 yıl)
    • Ücretsiz Mağazalarda Yayınlama
    • Bütün modüller dahil
  • Kurumsal

    Yoğun trafik ve birden çok uygulama için

    %30 indirim498,15 ₺

    348,56 ₺/ay + KDV

    12 ay için 4.182,72 ₺ peşin

    Yenileme: 348,56 ₺/ay

    • 5 GB SQL alanı (PostgreSQL)
    • 5 SQL veritabanı (proje)
    • 10 GB dosya depolama
    • 100.000 aylık aktif kullanıcı
    • 2.000 eş zamanlı realtime bağlantı
    • Ayda 5.000.000 edge function çağrısı
    • Haftalık yedek
    • Ücretsiz .app alan adı (1 yıl)
    • Ücretsiz Mağazalarda Yayınlama
    • Bütün modüller dahil

Fiyatlar aylık karşılık ve KDV hariçtir; uzun dönemde indirim artar. Paketler arasında istediğiniz zaman geçiş yapabilirsiniz.

Authentication

Hazır üyelik sistemi: kayıt, giriş, hesap yönetimi

Kullanıcının uygulamayla ilk temas ettiği yer giriş ekranı. Burada yaşanan bir hata ya da güvenlik açığı bütün ürünü etkiliyor. Üyelik sistemi uygulamanıza hazır uçlarla geliyor.

  • E-posta ve şifreyle kayıt, e-posta doğrulama ve şifre sıfırlama
  • Telefon numarasına tek kullanımlık kodla giriş
  • Google ile giriş ve Apple ile giriş (Sign in with Apple)
  • Erişim ve yenileme belirteçleri (JWT), cihaz başına oturum, uzaktan çıkış
  • Kullanıcı profili, rol ve özel alanlar
  • Kaba kuvvet denemelerine karşı hız sınırı
  • Uygulama içinden hesap silme ve kişisel veriyi dışa aktarma (KVKK)

Database · API · RLS

PostgreSQL veritabanı ve otomatik API

Verileriniz gerçek bir ilişkisel veritabanında, PostgreSQL’de duruyor. Tabloyu oluşturduğunuz anda API’si hazır; kimin hangi satırı okuyup yazabileceğini RLS kurallarıyla belirliyorsunuz.

  • Projeye ayrılmış PostgreSQL; tablo, ilişki, dizin, görünüm ve SQL fonksiyonları
  • Tablolardan otomatik REST API: süzme, sıralama, sayfalama ve ilişkili veri çekme
  • Satır düzeyi güvenlik (RLS): “kullanıcı yalnız kendi kayıtlarını görür” gibi kurallar
  • Realtime: tablo değişikliklerini uygulamada anında dinleme
  • Edge Functions ile özel uçlar, webhook ve zamanlanmış işler
  • Panelden tablo düzenleyici ve SQL editörü
  • Haftalık yedek ve tek tıkla geri yükleme

Nasıl çalışır

Üç adımda uygulamanızın backend’i hazır

  1. 1

    Projenizi açın

    Paketinizi seçin; size ayrılmış proje kimliği, veritabanı ve API anahtarları oluşur.

  2. 2

    Tablolarınızı kurun

    Panelden ya da SQL ile tabloları oluşturun, RLS kurallarını yazın. API uçları kendiliğinden hazır.

  3. 3

    Uygulamayı bağlayın

    Flutter, React Native, Swift ya da Kotlin uygulamanız proje kimliği ve anahtarıyla API’ye bağlanır; kullanıcılar kayıt olur, veri akar.

Karşılaştırma

Backend’i kendiniz yazmak mı, hazır altyapı mı?

Bir mobil uygulama için tipik arka uç işlerinin iki yoldaki karşılığı.

İşKendi backend’inizi yazmakctahosting mobil uygulama sunucusu
Üyelik, giriş, şifre sıfırlamaHaftalar süren geliştirme ve güvenlik testi Hazır
Google ve Apple ile girişHer sağlayıcı için ayrı entegrasyon Hazır
Veritabanı için APIHer tablo için ayrı uç yazmak Otomatik
Kullanıcı bazlı veri yetkisiHer uçta elle kontrol RLS kuralı
Dosya yüklemeAyrı depolama ve yetki kurulumu Hazır
Anlık veriWebSocket sunucusu kurmak Realtime
Sunucu, yedek, güncellemeSizin sorumluluğunuzda Bizde
Fiyat ve faturaÇoğu sağlayıcıda dolar, kullanıma göre değişen fatura Sabit aylık fiyat, TL fatura

Kimler için

Üyelik ve veri tutan her uygulama için

  • İçerik ve eğitim

    Ders, video, podcast ve makale uygulamaları; kullanıcı ilerlemesi ve favoriler.

  • Spor ve sağlık

    Antrenman, diyet ve takip uygulamaları; kullanıcıya özel kayıtlar.

  • Randevu ve hizmet

    Salon, klinik ve danışmanlık uygulamaları; müşteri hesabı ve takvim.

  • Sohbet ve topluluk

    Mesajlaşma, yorum ve akış uygulamaları; realtime ile anlık güncelleme.

  • Mobil SaaS

    Ekip, işletme ve verimlilik uygulamaları; rol bazlı erişim.

  • Ajanslar

    Müşterilerine uygulama geliştiren ekipler; her proje için ayrı ortam.

Kod örnekleri

Editörünüzde nasıl kullanılır?

Dilinizi seçin, örnekleri kaydırın. Her modül standart HTTP uçlarıyla çalışıyor; ek kütüphane şart değil. API adresi bütün projeler için aynı (https://alex.ctahosting.com); PROJE_ID ve ANON_KEY panelde projenize özel verilen değerler.

auth.phpPHP
<?php// Proje kimliği ve anahtar: panelde "Genel bakış" bölümünde$apiUrl   = 'https://alex.ctahosting.com'; // bütün projeler için aynı adres$projeId  = getenv('PROJE_ID');    // ör. prj_8fK2mQ… (her istekte x-project başlığı)$anonKey  = getenv('ANON_KEY');    // herkese açık anahtar (gizli değil) // Ortak istek fonksiyonu: JSON gönderir, JSON döndürürfunction istek(string $method, string $url, array $govde = [], ?string $token = null): array{    global $anonKey, $projeId;    $ch = curl_init($url);    curl_setopt_array($ch, [        CURLOPT_CUSTOMREQUEST  => $method,        CURLOPT_RETURNTRANSFER => true,        CURLOPT_HTTPHEADER     => array_filter([            'apikey: ' . $anonKey,            'x-project: ' . $projeId,            'Content-Type: application/json',            $token ? 'Authorization: Bearer ' . $token : null,        ]),        CURLOPT_POSTFIELDS     => $govde ? json_encode($govde) : null,    ]);    $yanit = json_decode(curl_exec($ch), true);    curl_close($ch);    return $yanit ?? [];} // 1) Kayıt: doğrulama e-postası otomatik gideristek('POST', "$apiUrl/auth/v1/signup", [    'email'    => 'ayse@ornek.com',    'password' => 'Guclu-Sifre-123',]); // 2) Giriş: erişim belirteci (access_token) döner$oturum = istek('POST', "$apiUrl/auth/v1/token?grant_type=password", [    'email'    => 'ayse@ornek.com',    'password' => 'Guclu-Sifre-123',]);$token = $oturum['access_token']; // sonraki isteklerde Bearer olarak

01 Kayıt ve giriş (Authentication)

E-posta ve şifreyle kayıt ve giriş. Dönen erişim belirteci sonraki bütün isteklerde kullanılıyor; Google ve Apple ile giriş de aynı uçtan.

urunler.phpPHP
<?php// auth.php'deki istek() fonksiyonu ve $token kullanılıyorrequire __DIR__ . '/auth.php'; // 1) Okuma: İstanbul'daki son 20 ürün, yeniden eskiye//    select   → dönecek sütunlar//    city=eq. → eşittir süzgeci (gt, lt, like, in … da var)//    order    → sıralama, limit → sayfa boyutu$urunler = istek('GET', "$apiUrl/rest/v1/products"    . '?select=id,name,price,city'    . '&city=eq.Istanbul'    . '&order=created_at.desc&limit=20', [], $token); foreach ($urunler as $u) {    echo $u['name'] . ' — ' . $u['price'] . " TL\n";} // 2) Yazma: aynı uca POST; RLS izin veriyorsa ekleniristek('POST', "$apiUrl/rest/v1/products", [    'name'  => 'Kahve kupası',    'price' => 249,    'city'  => 'Istanbul',], $token);

02 Veri okuma ve yazma (otomatik REST API)

Tabloyu oluşturduğunuz anda uç hazır: süzme, sıralama ve sayfalama adres parametreleriyle. Hangi satırların döneceğini RLS kuralları belirliyor.

orders_policy.sqlSQL · her dilde aynı
-- -------------------------------------------------------------- Satır düzeyi güvenlik (RLS): kural veritabanında bir kez yazılır.-- API'ye hangi dilden istek gelirse gelsin bu kurala göre süzülür.-- ------------------------------------------------------------ -- 1) orders tablosunda RLS'i aç (açılınca varsayılan: kimse göremez)alter table orders enable row level security; -- 2) Okuma: kullanıcı yalnız kendi siparişlerini görür--    auth.uid() = isteği yapan kullanıcının kimliği (belirteçten)create policy "kendi siparisleri" on orders  for select using (user_id = auth.uid()); -- 3) Ekleme: yalnız kendi adına sipariş ekleyebilircreate policy "kendi adina ekler" on orders  for insert with check (user_id = auth.uid()); -- 4) Güncelleme: yalnız kendi siparişini, yalnız 'beklemede' ikencreate policy "beklemedeyse gunceller" on orders  for update using (user_id = auth.uid() and status = 'pending');

03 Kullanıcı bazlı yetki (RLS)

Kural bir kez veritabanında yazılıyor; hangi dilden istek gelirse gelsin ona göre süzülüyor. Bu yüzden bu örnek her dilde aynı SQL.

yayin.phpPHP
<?php// PHP genelde dinlemez, YAYINLAR: sipariş durumu değişince// o kanalı dinleyen bütün uygulamalara anında mesaj gider.require __DIR__ . '/auth.php'; // Yayın service_role anahtarıyla: GİZLİ, yalnız sunucuda tutulur (uygulamaya konmaz)$serviceKey = getenv('SERVICE_ROLE_KEY');$siparisId = 1042; // Kanal: "siparis-1042" → bu siparişin ekranını açık tutan herkesistek('POST', "$apiUrl/realtime/v1/api/broadcast", [    'messages' => [[        'topic'   => "siparis-$siparisId",        'event'   => 'durum',        'payload' => ['status' => 'kargoda', 'kargo' => 'Yurtiçi'],    ]],], $serviceKey); // Not: tabloya yazmak da yeter. messages tablosunu dinleyen// uygulamalara her INSERT kendiliğinden gider (aşağıdaki dillere bakın).

04 Anlık güncelleme (Realtime)

Uygulama tabloyu dinliyor; yeni kayıt eklendiği anda ekrana düşüyor. Sunucu tarafından (PHP) da bütün dinleyenlere anlık mesaj yayınlanabiliyor.

yukle.phpPHP
<?phprequire __DIR__ . '/auth.php'; // Formdan gelen dosya (input name="avatar")$dosya = $_FILES['avatar']['tmp_name'];$kullaniciId = 'u_8f2c'; // Yol: <klasör>/<dosya adı>  → avatars/u_8f2c.jpg$ch = curl_init("$apiUrl/storage/v1/object/avatars/$kullaniciId.jpg");curl_setopt_array($ch, [    CURLOPT_POST           => true,    CURLOPT_RETURNTRANSFER => true,    CURLOPT_HTTPHEADER     => [        'apikey: ' . $anonKey,        'x-project: ' . $projeId,        'Authorization: Bearer ' . $token,        'Content-Type: image/jpeg',        'x-upsert: true',            // varsa üzerine yaz    ],    CURLOPT_POSTFIELDS     => file_get_contents($dosya),]);curl_exec($ch);curl_close($ch); // Herkese açık klasörde doğrudan bağlantı:echo "$apiUrl/storage/v1/object/public/$projeId/avatars/$kullaniciId.jpg";

05 Fotoğraf ve dosya yükleme (Storage)

Profil fotoğrafı, belge ve video yükleme. Klasör (bucket) kuralları kimin neyi yükleyip görebileceğini belirliyor; herkese açık klasörlerde dosyanın doğrudan bağlantısı var.

hosgeldin.phpPHP
<?php// Fonksiyon projede çalışır; PHP yalnızca çağırır.// (Fonksiyonun kendisi panelde "Edge Functions" bölümünde yazılır.)require __DIR__ . '/auth.php'; // POST /functions/v1/<fonksiyon adı>$sonuc = istek('POST', "$apiUrl/functions/v1/welcome", [    'email' => 'ayse@ornek.com',    'name'  => 'Ayşe',], $token); // Fonksiyonun döndürdüğü JSONif (!empty($sonuc['ok'])) {    echo 'Hoş geldin e-postası gönderildi';}

06 Kendi backend kodunuz (Edge Functions)

API’nin yetmediği işler için fonksiyon: burada yeni üyeye hoş geldin e-postası gönderen fonksiyon çağrılıyor. Webhook, üçüncü taraf API ve zamanlanmış işler aynı yöntemle.

S.S.S.

Mobil uygulama sunucusu hakkında sık sorulanlar

Aradığınızı bulamazsanız yazın; aynı gün dönüyoruz.

Hangisi size uygun?

Satış ekibimiz ihtiyacınıza göre paket önersin.

  • Mobil uygulamanın ekranlarının arkasında çalışan sunucu tarafıdır: kullanıcı hesaplarını tutar, girişi doğrular, veriyi saklar ve uygulamaya API ile sunar. Uygulama telefonda çalışır; bu işler sunucuda yapılır.

Uygulamanıza odaklanın, backend’i bize bırakın

Üyelik, veritabanı, API, depolama ve realtime hazır. Paketinizi seçin, sorularınız için satış ekibimiz yanınızda.

Kurulum ücreti yok · Taahhüt yok · 14 gün içinde iade