ctahosting

Backend mobile · BaaS

Backend pour application mobile : prêt à l’emploi pour lancer votre app plus vite

Ne développez plus le backend de votre application à partir de zéro. Comptes utilisateurs, base de données Postgres, API automatique, stockage de fichiers et données en temps réel sont prêts dans un seul projet. Vous vous concentrez sur les écrans et sur votre produit.

  • Postgres avec API REST automatique
  • Inscription, connexion et sécurité au niveau des lignes (RLS)
  • Prix mensuel fixe, sans facturation à l’usage
Voir les offresCe qui est inclus

À partir de 1,23 €/mois HT

Modules inclus

Tout le backend de votre application mobile dans un seul projet

À chaque nouvelle application, on recode les mêmes choses : inscription, connexion, base de données, API, envoi de fichiers. Ici, tout est déjà prêt. Votre application se connecte avec l’ID du projet et sa clé, et fonctionne.

  • Authentification

    Inscription et connexion par e-mail et mot de passe, code à usage unique par SMS, connexion avec Google et Apple. Sessions et jetons de rafraîchissement gérés pour vous.

  • Base de données

    Une base Postgres dédiée à chaque projet. Créez tables, relations, index et vues depuis le tableau de bord ou en SQL.

  • API

    Une API REST générée automatiquement : dès que vous ajoutez une table, les routes de lecture, écriture, filtrage et pagination sont prêtes.

  • Stockage

    Envoi de photos, vidéos et fichiers. Règles d’accès par bucket et envoi par morceaux pour les gros fichiers.

  • Temps réel

    Mises à jour en direct : une modification dans une table arrive aussitôt dans l’application. Idéal pour le chat, les fils d’activité et les tableaux de bord en direct.

  • Edge Functions

    Exécutez votre propre code backend : webhooks, envoi d’e-mails, appels d’API tierces et règles métier.

  • Sécurité (RLS)

    Accès aux données par utilisateur : grâce aux règles de sécurité au niveau des lignes, chacun ne voit que les lignes auxquelles il a droit.

  • Sauvegardes et supervision

    Sauvegarde hebdomadaire de la base, restauration, journaux des requêtes et des erreurs. La maintenance et les mises à jour des serveurs sont à notre charge.

Offres

Offres de backend pour application mobile

Chaque offre inclut tous les modules : authentification, base de données, API, stockage, temps réel, Edge Functions et RLS. Seules les ressources changent.

  • Starter

    Pour une première app ou un MVP

    -33 %2,65 €

    1,76 €/mois HT

    21,17 € pour 12 mois, payés d’avance

    Renouvellement : 1,76 €/mois

    • 1 Go d’espace SQL (Postgres)
    • 1 base(s) de données SQL (projets)
    • 1 Go de stockage de fichiers
    • 5 000 utilisateurs actifs par mois
    • 100 connexions temps réel simultanées
    • 250 000 appels d’edge functions par mois
    • Sauvegarde hebdomadaire
    • Publication gratuite sur les stores
    • Tous les modules inclus
  • Le plus choisi

    Pro

    Pour les applications en croissance

    -29 %6,20 €

    4,42 €/mois HT

    53,08 € pour 12 mois, payés d’avance

    Renouvellement : 4,42 €/mois

    • 3 Go d’espace SQL (Postgres)
    • 3 base(s) de données SQL (projets)
    • 5 Go de stockage de fichiers
    • 25 000 utilisateurs actifs par mois
    • 500 connexions temps réel simultanées
    • 1 000 000 appels d’edge functions par mois
    • Sauvegarde hebdomadaire
    • Domaine .app offert (1re année)
    • Publication gratuite sur les stores
    • Tous les modules inclus
  • Business

    Pour un fort trafic et plusieurs applications

    -30 %8,85 €

    6,20 €/mois HT

    74,35 € pour 12 mois, payés d’avance

    Renouvellement : 6,20 €/mois

    • 5 Go d’espace SQL (Postgres)
    • 5 base(s) de données SQL (projets)
    • 10 Go de stockage de fichiers
    • 100 000 utilisateurs actifs par mois
    • 2 000 connexions temps réel simultanées
    • 5 000 000 appels d’edge functions par mois
    • Sauvegarde hebdomadaire
    • Domaine .app offert (1re année)
    • Publication gratuite sur les stores
    • Tous les modules inclus

Prix mensuels hors taxes. Plus l’engagement est long, plus la remise augmente. Vous pouvez changer d’offre à tout moment.

Authentification

Authentification prête à l’emploi : inscription, connexion, comptes

L’écran de connexion est le premier contact de l’utilisateur avec votre application. Un bug ou une faille à cet endroit touche tout le produit. L’authentification arrive avec des routes prêtes pour votre application.

  • Inscription par e-mail et mot de passe, vérification de l’e-mail et réinitialisation du mot de passe
  • Connexion sans mot de passe avec un code à usage unique par SMS
  • Connexion avec Google et Sign in with Apple
  • Jetons d’accès et de rafraîchissement (JWT), sessions par appareil, déconnexion à distance
  • Profils utilisateurs, rôles et champs personnalisés
  • Limitation du débit contre les attaques par force brute
  • Suppression du compte et export des données personnelles depuis l’application (RGPD)

Base de données · API · RLS

Une base Postgres avec API automatique

Vos données sont stockées dans une vraie base relationnelle : Postgres. L’API est disponible dès que la table existe, et les règles RLS définissent qui peut lire et modifier quelles lignes.

  • Base Postgres dédiée : tables, relations, index, vues et fonctions SQL
  • API REST générée à partir de vos tables : filtrage, tri, pagination et données liées
  • Sécurité au niveau des lignes (RLS) : des règles comme « chaque utilisateur ne voit que ses propres données »
  • Temps réel : recevez les modifications des tables dans l’application, en direct
  • Routes personnalisées, webhooks et tâches planifiées avec les Edge Functions
  • Éditeur de tables et éditeur SQL dans le tableau de bord
  • Sauvegarde hebdomadaire et restauration en un clic

Comment ça marche

Le backend de votre application prêt en trois étapes

  1. 1

    Créez votre projet

    Choisissez une offre. Vous obtenez un ID de projet, une base de données et des clés d’API rien qu’à vous.

  2. 2

    Créez vos tables

    Créez vos tables depuis le tableau de bord ou en SQL et écrivez vos règles RLS. Les routes de l’API apparaissent d’elles-mêmes.

  3. 3

    Connectez votre application

    Votre application Flutter, React Native, Swift ou Kotlin se connecte avec l’ID du projet et sa clé. Les utilisateurs s’inscrivent, les données circulent.

Comparatif

Développer son propre backend ou utiliser un backend prêt à l’emploi ?

Les tâches backend habituelles d’une application mobile, dans les deux cas.

TâcheDévelopper son propre backendBackend mobile ctahosting
Inscription, connexion, mot de passe oubliéDes semaines de développement et de tests de sécurité Inclus
Connexion avec Google et AppleUne intégration à part pour chaque fournisseur Inclus
API pour la base de donnéesDes routes à écrire table par table Automatique
Accès aux données par utilisateurContrôles manuels dans chaque route Règle RLS
Envoi de fichiersStockage et droits à configurer à part Inclus
Données en directUn serveur WebSocket à installer Temps réel
Serveurs, sauvegardes, mises à jourÀ votre charge À notre charge
Prix et facturationFacturation à l’usage Prix mensuel fixe

Pour qui

Pour toute application avec des comptes et des données

  • Contenu et formation

    Applications de cours, vidéo, podcast et articles, avec progression et favoris.

  • Sport et santé

    Applications d’entraînement, de nutrition et de suivi, avec des données propres à chaque utilisateur.

  • Prise de rendez-vous

    Applications pour salons, cabinets et consultants, avec compte client et agenda.

  • Chat et communauté

    Messagerie, commentaires et fils d’actualité, mis à jour en direct avec le temps réel.

  • SaaS mobile

    Applications d’équipe, de gestion et de productivité avec accès par rôle.

  • Agences

    Les équipes qui développent des applications pour leurs clients, avec un environnement séparé par projet.

Exemples de code

À quoi ça ressemble dans votre éditeur

Choisissez votre langage et faites défiler les exemples. Chaque module passe par des routes HTTP standard, sans SDK obligatoire. L’adresse de l’API est la même pour tous les projets (https://alex.ctahosting.com) ; PROJECT_ID et ANON_KEY sont fournis pour votre projet dans le tableau de bord. Les commentaires du code sont en anglais.

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 Inscription et connexion (authentification)

Inscription et connexion par e-mail et mot de passe. Le jeton d’accès renvoyé sert ensuite pour toutes les requêtes. La connexion avec Google et Apple passe par la même route.

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 Lire et écrire des données (API REST automatique)

La route existe dès que la table est créée : filtrage, tri et pagination par paramètres d’URL. Les règles RLS décident quelles lignes sont renvoyées.

orders_policy.sqlSQL · identique dans tous les langages
-- -------------------------------------------------------------- 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 Accès par utilisateur (RLS)

La règle s’écrit une seule fois dans la base et s’applique à chaque requête, quel que soit le langage. C’est pourquoi cet exemple est le même SQL partout.

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 Mises à jour en direct (temps réel)

L’application écoute une table : une nouvelle ligne apparaît à l’écran dès son ajout. Le serveur (PHP) peut aussi diffuser un message à tous les clients à l’écoute.

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 Envoi de photos et de fichiers (stockage)

Photos de profil, documents et vidéos. Les règles de bucket définissent qui peut envoyer et voir quoi. Les fichiers des buckets publics ont un lien direct.

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 Votre propre code backend (Edge Functions)

Des fonctions pour tout ce que l’API ne couvre pas. Ici, on appelle une fonction qui envoie un e-mail de bienvenue au nouvel inscrit. Webhooks, API tierces et tâches planifiées fonctionnent de la même façon.

FAQ

Questions fréquentes sur le backend d’application mobile

Vous ne trouvez pas votre réponse ? Écrivez-nous, nous répondons le jour même.

Quelle offre vous convient ?

Notre équipe commerciale vous conseille selon vos besoins.

  • C’est la partie serveur qui tourne derrière les écrans de votre application : elle gère les comptes utilisateurs, vérifie les connexions, stocke les données et les fournit à l’application via une API. L’application tourne sur le téléphone, ce travail se fait sur le serveur. On parle aussi de service backend, de serveur d’application mobile ou de MBaaS (Mobile Backend as a Service).

Concentrez-vous sur votre application, on s’occupe du backend

Authentification, base de données, API, stockage et temps réel sont prêts. Choisissez votre offre ; notre équipe commerciale répond à vos questions.

Aucuns frais d’installation · Sans engagement · Remboursement sous 14 jours