Supabase est une plateforme open-source qui fournit des fonctionnalités Backend-as-a-Service (BaaS), similaire à Firebase. Il repose sur PostgreSQL et offre une gamme de services tels que l’authentification, la gestion des bases de données en temps réel, le stockage de fichiers et les fonctions serverless. Supabase est conçu pour être une alternative open-source robuste à Firebase, avec des fonctionnalités avancées et une plus grande flexibilité.
1. Fonctionnalités de Supabase
Supabase propose plusieurs fonctionnalités essentielles pour le développement d’applications modernes :
a) Base de Données PostgreSQL
Supabase repose sur PostgreSQL, une base de données relationnelle puissante. Elle offre des fonctionnalités avancées comme :
- Les requêtes SQL avancées
- Les relations entre tables
- Le support des fonctions stockées et des triggers
b) Authentification et Gestion des Utilisateurs
Supabase propose un système d’authentification robuste qui supporte :
- Connexion par email/mot de passe
- Authentification sociale (Google, GitHub, Twitter, etc.)
- Authentification via OAuth et JWT
- Règles de sécurité avancées pour contrôler l’accès aux ressources
c) Stockage de Fichiers
Supabase inclut un système de stockage permettant d’héberger des fichiers tels que des images et des vidéos. Il utilise des permissions configurables et une API pour gérer les fichiers.
d) Realtime Database
Grâce à Realtime Postgres, Supabase permet de recevoir des mises à jour en temps réel sur les changements de la base de données, ce qui est idéal pour les applications collaboratives ou de chat.
e) API Automatique
À partir d’une base de données PostgreSQL, Supabase génère automatiquement une API RESTful, facilitant l’accès aux données depuis une application front-end.
f) Fonctions Serverless (Edge Functions)
Supabase permet d’exécuter des fonctions serverless, ce qui permet d’ajouter de la logique back-end sans gérer d’infrastructure complexe.
2. Installation et Configuration de Supabase
a) Création d’un projet Supabase
- Rendez-vous sur Supabase et créez un compte.
- Créez un nouveau projet et notez l’URL et la clé API fournie par Supabase.
- Accédez à la console de gestion pour configurer votre base de données et vos services.
b) Installation du SDK Supabase
Supabase fournit un SDK pour interagir avec ses services en utilisant JavaScript, Flutter, Python, etc.
Si vous utilisez Node.js, installez le SDK via NPM :
npm install @supabase/supabase-js
Si vous utilisez Flutter, installez le package via pub.dev :
dependencies:
supabase_flutter: ^1.2.0
3. Intégration de Supabase avec Flutter
a) Initialisation de Supabase dans Flutter
Ajoutez la configuration de Supabase dans votre projet Flutter.
Dans main.dart :
import 'package:flutter/material.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Supabase.initialize(
url: 'https://your-project-url.supabase.co',
anonKey: 'your-anon-key',
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
b) Authentification avec Supabase
Implémenter l’inscription d’un utilisateur par email/mot de passe :
Future<void> signUpUser(String email, String password) async {
final response = await Supabase.instance.client.auth.signUp(
email: email,
password: password,
);
print('Utilisateur inscrit : ${response.user?.email}');
}
Implémenter une connexion par email/mot de passe :
Future<void> signInUser(String email, String password) async {
final response = await Supabase.instance.client.auth.signInWithPassword(
email: email,
password: password,
);
print('Utilisateur connecté : ${response.user?.email}');
}
Déconnexion de l’utilisateur :
Future<void> signOutUser() async {
await Supabase.instance.client.auth.signOut();
}
c) Gestion des Données avec Supabase
Insertion de données :
Future<void> addUser(String name, String email) async {
await Supabase.instance.client.from('users').insert({
'name': name,
'email': email,
});
}
Lecture de données :
Future<List<Map<String, dynamic>>> getUsers() async {
final response = await Supabase.instance.client.from('users').select();
return response;
}
Mise à jour d’un utilisateur :
Future<void> updateUser(int id, String newName) async {
await Supabase.instance.client.from('users').update({
'name': newName,
}).match({'id': id});
}
Suppression d’un utilisateur :
Future<void> deleteUser(int id) async {
await Supabase.instance.client.from('users').delete().match({'id': id});
}
d) Gestion des Événements en Temps Réel
Insertion de données :
Abonnement aux mises à jour de la base de données en temps réel :
void listenToUsers() {
Supabase.instance.client
.from('users')
.stream(primaryKey: ['id'])
.listen((data) {
print('Données mises à jour : $data');
});
}
4. Prix de Supabase
Supabase propose un modèle de tarification flexible comprenant plusieurs plans :
- Gratuit : Idéal pour les développeurs individuels et les petites applications. Il inclut :
- 500 Mo de stockage
- 50 000 requêtes par mois
- 2 bases de données avec 500 000 lignes chacune
- 1 Go de bande passante pour l’authentification et le stockage
- Fonctionnalités essentielles de Supabase, y compris l’authentification, le stockage et les mises à jour en temps réel.
- Pro : À partir de 25$/mois, destiné aux startups et projets en croissance. Il offre :
- 8 Go de stockage
- 5 millions de requêtes par mois
- Bases de données évolutives
- 50 Go de bande passante
- Accès à des fonctionnalités avancées et un support prioritaire
- Entreprise : Offre personnalisée pour les grandes entreprises, avec :
- Des performances évolutives
- Un support dédié 24/7
- Sécurité et conformité avancées (SOC2, HIPAA, etc.)
- Options de déploiement sur mesure, y compris auto-hébergement
Les prix peuvent varier, et il est recommandé de consulter le site officiel pour obtenir les dernières informations.
Conclusion
Supabase est une excellente alternative open-source à Firebase, offrant des fonctionnalités puissantes basées sur PostgreSQL. Son intégration avec Flutter est simple et permet d’ajouter rapidement des fonctionnalités backend à votre application. Grâce à Supabase, les développeurs peuvent gérer facilement l’authentification, la base de données, le stockage et les mises à jour en temps réel tout en ayant un contrôle total sur leur infrastructure.