ctahosting

App-Backend · BaaS

Backend für Ihre App: fertig eingerichtet und sofort startklar

Schreiben Sie das Backend Ihrer App nicht jedes Mal neu. Benutzerkonten, Postgres-Datenbank, automatische API, Dateispeicher und Echtzeitdaten sind in einem Projekt fertig. Sie konzentrieren sich auf Oberfläche und Produkt.

  • Postgres mit automatischer REST-API
  • Registrierung, Login und Row Level Security (RLS)
  • Fester Monatspreis, keine nutzungsbasierten Kosten
Tarife ansehenWas ist enthalten?

Ab 1,23 € im Monat zzgl. MwSt.

Fertige Module

Alles, was Ihre App im Backend braucht, in einem Projekt

Bei jeder neuen App wird dasselbe neu programmiert: Registrierung, Login, Datenbank, API, Datei-Upload. Hier ist das alles schon da. Ihre App verbindet sich mit Projekt-ID und Schlüssel und läuft.

  • Authentication

    Registrierung und Login per E-Mail und Passwort, Einmalcode per SMS, Anmeldung mit Google und Apple. Sessions und Refresh-Tokens inklusive.

  • Datenbank

    Eine eigene Postgres-Datenbank für jedes Projekt. Tabellen, Beziehungen, Indizes und Views legen Sie im Dashboard oder per SQL an.

  • API

    Automatische REST-API für Ihre Datenbank: Sobald Sie eine Tabelle anlegen, stehen Endpunkte zum Lesen, Schreiben, Filtern und Paginieren bereit.

  • Dateispeicher

    Fotos, Videos und Dateien hochladen. Zugriffsregeln pro Bucket, fortsetzbarer Upload für große Dateien.

  • Echtzeit

    Live-Updates: Änderungen in einer Tabelle kommen sofort in der App an. Für Chats, Activity-Feeds und Live-Dashboards.

  • Edge Functions

    Eigenen Backend-Code ausführen: Webhooks, E-Mail-Versand, Aufrufe von Drittanbieter-APIs und eigene Geschäftslogik.

  • Sicherheit (RLS)

    Datenzugriff pro Benutzer: Mit Row Level Security sieht jeder Benutzer nur die Zeilen, die er sehen darf.

  • Backups und Monitoring

    Wöchentliche Datenbank-Backups, Wiederherstellung sowie Request- und Fehler-Logs. Wartung und Updates der Server übernehmen wir.

Tarife

Tarife für Ihr App-Backend

In jedem Tarif sind alle Module enthalten: Authentication, Datenbank, API, Storage, Echtzeit, Edge Functions und RLS. Die Tarife unterscheiden sich nur bei den Ressourcen.

  • Starter

    Für die erste App oder ein MVP

    33 % Rabatt2,65 €

    1,76 €/Monat zzgl. MwSt.

    21,17 € für 12 Monate im Voraus

    Verlängerung: 1,76 €/Monat

    • 1 GB SQL-Speicher (Postgres)
    • 1 SQL-Datenbank(en) (Projekte)
    • 1 GB Dateispeicher
    • 5.000 monatlich aktive Nutzer
    • 100 gleichzeitige Echtzeit-Verbindungen
    • 250.000 Edge-Function-Aufrufe pro Monat
    • Wöchentliches Backup
    • Kostenlose Veröffentlichung in den App Stores
    • Alle Module inklusive
  • Am beliebtesten

    Pro

    Für wachsende Apps

    29 % Rabatt6,20 €

    4,42 €/Monat zzgl. MwSt.

    53,08 € für 12 Monate im Voraus

    Verlängerung: 4,42 €/Monat

    • 3 GB SQL-Speicher (Postgres)
    • 3 SQL-Datenbank(en) (Projekte)
    • 5 GB Dateispeicher
    • 25.000 monatlich aktive Nutzer
    • 500 gleichzeitige Echtzeit-Verbindungen
    • 1.000.000 Edge-Function-Aufrufe pro Monat
    • Wöchentliches Backup
    • Kostenlose .app-Domain (1. Jahr)
    • Kostenlose Veröffentlichung in den App Stores
    • Alle Module inklusive
  • Business

    Für viel Traffic und mehrere Apps

    30 % Rabatt8,85 €

    6,20 €/Monat zzgl. MwSt.

    74,35 € für 12 Monate im Voraus

    Verlängerung: 6,20 €/Monat

    • 5 GB SQL-Speicher (Postgres)
    • 5 SQL-Datenbank(en) (Projekte)
    • 10 GB Dateispeicher
    • 100.000 monatlich aktive Nutzer
    • 2.000 gleichzeitige Echtzeit-Verbindungen
    • 5.000.000 Edge-Function-Aufrufe pro Monat
    • Wöchentliches Backup
    • Kostenlose .app-Domain (1. Jahr)
    • Kostenlose Veröffentlichung in den App Stores
    • Alle Module inklusive

Preise pro Monat zzgl. MwSt. Bei längerer Laufzeit steigt der Rabatt. Ein Wechsel des Tarifs ist jederzeit möglich.

Authentication

Fertiges Login-System: Registrierung, Anmeldung, Benutzerkonten

Der Login ist das Erste, was Nutzer von Ihrer App sehen. Ein Fehler oder eine Sicherheitslücke an dieser Stelle trifft das ganze Produkt. Die Benutzerverwaltung kommt mit fertigen Endpunkten für Ihre App.

  • Registrierung mit E-Mail und Passwort, E-Mail-Bestätigung und Passwort zurücksetzen
  • Login ohne Passwort mit Einmalcode per SMS
  • Mit Google anmelden und Mit Apple anmelden
  • Access- und Refresh-Tokens (JWT), Sessions pro Gerät, Abmelden aus der Ferne
  • Benutzerprofile, Rollen und eigene Felder
  • Rate Limiting gegen Brute-Force-Angriffe
  • Konto löschen und Datenexport direkt in der App (DSGVO)

Datenbank · API · RLS

Postgres-Datenbank mit automatischer API

Ihre Daten liegen in einer echten relationalen Datenbank: Postgres. Die API steht, sobald die Tabelle angelegt ist. Mit RLS-Regeln legen Sie fest, wer welche Zeilen lesen und schreiben darf.

  • Eigene Postgres-Datenbank: Tabellen, Beziehungen, Indizes, Views und SQL-Funktionen
  • Automatische REST-API aus Ihren Tabellen: Filtern, Sortieren, Paginieren, verknüpfte Daten
  • Row Level Security (RLS): Regeln wie „Nutzer sehen nur ihre eigenen Einträge“
  • Echtzeit: Tabellenänderungen in der App sofort empfangen
  • Eigene Endpunkte, Webhooks und Cronjobs mit Edge Functions
  • Tabelleneditor und SQL-Editor im Dashboard
  • Wöchentliche Backups und Wiederherstellung per Klick

So funktioniert’s

In drei Schritten zum Backend für Ihre App

  1. 1

    Projekt anlegen

    Tarif wählen. Sie erhalten Ihre eigene Projekt-ID, Datenbank und API-Schlüssel.

  2. 2

    Tabellen einrichten

    Tabellen im Dashboard oder per SQL anlegen und RLS-Regeln schreiben. Die API-Endpunkte entstehen automatisch.

  3. 3

    App verbinden

    Ihre Flutter-, React-Native-, Swift- oder Kotlin-App verbindet sich mit Projekt-ID und Schlüssel. Nutzer registrieren sich, die Daten fließen.

Vergleich

Backend selbst entwickeln oder fertiges Backend nutzen?

Typische Backend-Aufgaben einer mobilen App, auf beiden Wegen.

AufgabeEigenes Backend entwickelnctahosting App-Backend
Registrierung, Login, Passwort zurücksetzenWochen an Entwicklung und Sicherheitstests Fertig
Anmelden mit Google und AppleEigene Integration für jeden Anbieter Fertig
API für die DatenbankEndpunkte für jede Tabelle einzeln schreiben Automatisch
Datenzugriff pro BenutzerPrüfung von Hand in jedem Endpunkt RLS-Regel
Datei-UploadEigenen Speicher und Rechte einrichten Fertig
Live-DatenEigenen WebSocket-Server betreiben Echtzeit
Server, Backups, UpdatesIhre Verantwortung Übernehmen wir
Preis und AbrechnungNutzungsbasierte Kosten Fester Monatspreis

Für wen

Für jede App mit Benutzerkonten und Daten

  • Inhalte und E-Learning

    Kurs-, Video-, Podcast- und Artikel-Apps mit Lernfortschritt und Favoriten.

  • Fitness und Gesundheit

    Trainings-, Ernährungs- und Tracking-Apps mit persönlichen Daten pro Nutzer.

  • Termine und Services

    Apps für Salons, Praxen und Beratung mit Kundenkonto und Kalender.

  • Chat und Community

    Messenger-, Kommentar- und Feed-Apps, live aktualisiert mit Echtzeit.

  • Mobile SaaS

    Team-, Business- und Produktivitäts-Apps mit rollenbasiertem Zugriff.

  • Agenturen

    Teams, die Apps für Kunden entwickeln, mit eigener Umgebung pro Projekt.

Codebeispiele

So sieht es in Ihrem Editor aus

Sprache wählen und durch die Beispiele scrollen. Alle Module laufen über normale HTTP-Endpunkte, ein SDK ist nicht nötig. Die API-Adresse ist für alle Projekte gleich (https://alex.ctahosting.com); PROJECT_ID und ANON_KEY finden Sie für Ihr Projekt im Dashboard. Die Kommentare im Code sind auf Englisch.

auth.phpPHP
<?php// Project ID and key: in the dashboard under "Overview"$apiUrl    = 'https://alex.ctahosting.com'; // the same address for every project$projectId = getenv('PROJECT_ID');    // e.g. prj_8fK2mQ… (sent as the x-project header)$anonKey   = getenv('ANON_KEY');    // public key (not a secret) // Shared request helper: sends JSON, returns JSONfunction request(string $method, string $url, array $body = [], ?string $token = null): array{    global $anonKey, $projectId;    $ch = curl_init($url);    curl_setopt_array($ch, [        CURLOPT_CUSTOMREQUEST  => $method,        CURLOPT_RETURNTRANSFER => true,        CURLOPT_HTTPHEADER     => array_filter([            'apikey: ' . $anonKey,            'x-project: ' . $projectId,            'Content-Type: application/json',            $token ? 'Authorization: Bearer ' . $token : null,        ]),        CURLOPT_POSTFIELDS     => $body ? json_encode($body) : null,    ]);    $response = json_decode(curl_exec($ch), true);    curl_close($ch);    return $response ?? [];} // 1) Sign up: the verification email is sent automaticallyrequest('POST', "$apiUrl/auth/v1/signup", [    'email'    => 'jane@example.com',    'password' => 'Strong-Pass-123',]); // 2) Log in: returns an access token (access_token)$session = request('POST', "$apiUrl/auth/v1/token?grant_type=password", [    'email'    => 'jane@example.com',    'password' => 'Strong-Pass-123',]);$token = $session['access_token']; // send as Bearer on later requests

01 Registrierung und Login (Authentication)

Registrierung und Login mit E-Mail und Passwort. Das zurückgegebene Access-Token wird bei allen weiteren Anfragen mitgeschickt. Login mit Google und Apple läuft über denselben Endpunkt.

products.phpPHP
<?php// Uses request() and $token from auth.phprequire __DIR__ . '/auth.php'; // 1) Read: the latest 20 products in Istanbul, newest first//    select   → columns to return//    city=eq. → equals filter (gt, lt, like, in … also work)//    order    → sorting, limit → page size$products = request('GET', "$apiUrl/rest/v1/products"    . '?select=id,name,price,city'    . '&city=eq.Istanbul'    . '&order=created_at.desc&limit=20', [], $token); foreach ($products as $u) {    echo $u['name'] . ' — ' . $u['price'] . " USD\n";} // 2) Write: POST to the same endpoint; inserted if RLS allows itrequest('POST', "$apiUrl/rest/v1/products", [    'name'  => 'Coffee mug',    'price' => 12,    'city'  => 'Istanbul',], $token);

02 Daten lesen und schreiben (automatische REST-API)

Der Endpunkt steht, sobald die Tabelle angelegt ist: Filtern, Sortieren und Paginieren über URL-Parameter. Welche Zeilen zurückkommen, bestimmen die RLS-Regeln.

orders_policy.sqlSQL · in jeder Sprache gleich
-- -------------------------------------------------------------- Row-level security (RLS): the policy is written once, in the database.-- Every API request is filtered by it, whatever language it comes from.-- ------------------------------------------------------------ -- 1) Enable RLS on the orders table (once enabled, nobody sees anything by default)alter table orders enable row level security; -- 2) Read: users only see their own orders--    auth.uid() = the ID of the user making the request (from the token)create policy "own orders" on orders  for select using (user_id = auth.uid()); -- 3) Insert: users can only add orders for themselvescreate policy "insert own" on orders  for insert with check (user_id = auth.uid()); -- 4) Update: only their own order, and only while it's 'pending'create policy "update while pending" on orders  for update using (user_id = auth.uid() and status = 'pending');

03 Zugriff pro Benutzer (RLS)

Die Regel wird einmal in der Datenbank geschrieben und gilt für jede Anfrage, egal aus welcher Sprache. Deshalb ist dieses Beispiel überall dasselbe SQL.

broadcast.phpPHP
<?php// PHP usually doesn't listen, it BROADCASTS: when an order status changes,// every app listening on that channel gets a message instantly.require __DIR__ . '/auth.php'; // Broadcasts use the service_role key: SECRET, keep it on the server only (never in the app)$serviceKey = getenv('SERVICE_ROLE_KEY');$orderId = 1042; // Channel: "order-1042" → everyone who has this order's screen openrequest('POST', "$apiUrl/realtime/v1/api/broadcast", [    'messages' => [[        'topic'   => "order-$orderId",        'event'   => 'status',        'payload' => ['status' => 'shipped', 'carrier' => 'DHL'],    ]],], $serviceKey); // Note: writing to the table works too. Every INSERT reaches apps// listening on the messages table on its own (see the other languages).

04 Live-Updates (Echtzeit)

Die App hört auf eine Tabelle, ein neuer Eintrag erscheint sofort auf dem Bildschirm. Auch vom Server (PHP) aus können Sie eine Nachricht an alle Zuhörer senden.

upload.phpPHP
<?phprequire __DIR__ . '/auth.php'; // File from the form (input name="avatar")$file = $_FILES['avatar']['tmp_name'];$userId = 'u_8f2c'; // Path: <bucket>/<file name>  → avatars/u_8f2c.jpg$ch = curl_init("$apiUrl/storage/v1/object/avatars/$userId.jpg");curl_setopt_array($ch, [    CURLOPT_POST           => true,    CURLOPT_RETURNTRANSFER => true,    CURLOPT_HTTPHEADER     => [        'apikey: ' . $anonKey,        'x-project: ' . $projectId,        'Authorization: Bearer ' . $token,        'Content-Type: image/jpeg',        'x-upsert: true',            // overwrite if it exists    ],    CURLOPT_POSTFIELDS     => file_get_contents($file),]);curl_exec($ch);curl_close($ch); // Direct link in a public bucket:echo "$apiUrl/storage/v1/object/public/$projectId/avatars/$userId.jpg";

05 Fotos und Dateien hochladen (Storage)

Profilbilder, Dokumente und Videos hochladen. Bucket-Regeln legen fest, wer was hochladen und sehen darf. Dateien in öffentlichen Buckets haben einen direkten Link.

welcome.phpPHP
<?php// The function runs in your project; PHP only calls it.// (You write the function itself in the dashboard under "Edge Functions".)require __DIR__ . '/auth.php'; // POST /functions/v1/<function name>$result = request('POST', "$apiUrl/functions/v1/welcome", [    'email' => 'jane@example.com',    'name'  => 'Jane',], $token); // JSON returned by the functionif (!empty($result['ok'])) {    echo 'Welcome email sent';}

06 Eigener Backend-Code (Edge Functions)

Funktionen für alles, was die API nicht abdeckt. Hier wird eine Funktion aufgerufen, die neuen Nutzern eine Willkommens-E-Mail schickt. Webhooks, Drittanbieter-APIs und Cronjobs funktionieren genauso.

FAQ

Häufige Fragen zum App-Backend

Nicht gefunden, was Sie suchen? Schreiben Sie uns; wir antworten am selben Tag.

Was passt zu Ihnen?

Unser Vertrieb empfiehlt Ihnen das passende Paket.

  • Das Backend ist der Serverteil hinter den Bildschirmen Ihrer App: Es speichert Benutzerkonten, prüft den Login, verwaltet die Daten und liefert sie per API an die App. Die App läuft auf dem Smartphone, diese Arbeit erledigt der Server. Man spricht auch von Backend-Service, App-Server oder Mobile Backend as a Service (MBaaS).

Kümmern Sie sich um Ihre App, das Backend übernehmen wir

Login, Datenbank, API, Speicher und Echtzeit sind startklar. Wählen Sie Ihren Tarif. Bei Fragen hilft Ihnen unser Vertrieb.

Keine Einrichtungsgebühr · Keine Mindestlaufzeit · Rückgabe innerhalb von 14 Tagen