Documentație Supabase RO
Introducere în Supabase
Supabase este o platformă open-source care oferă toate instrumentele de care ai nevoie pentru a construi rapid aplicații, fără a fi nevoie să gestionezi o infrastructură complexă. Este o alternativă la Firebase, construită pe tehnologii open-source consacrate.
Cu Supabase, obții o bază de date PostgreSQL reală, autentificare securizată, stocare de fișiere, funcții edge și abonamente în timp real, toate integrate și ușor de utilizat.
De ce Supabase?
- Open Source: Control complet și transparență.
- Bază de Date PostgreSQL: Puterea și flexibilitatea unei baze de date relaționale de top.
- API-uri Instantanee: Generează automat API-uri RESTful și GraphQL din schema bazei tale de date.
- Autentificare: Soluție completă de autentificare cu suport pentru OAuth, email/parolă și multe altele.
- Stocare: Găzduire scalabilă pentru fișierele utilizatorilor.
- Funcții Edge: Rulează cod backend la nivel global, aproape de utilizatorii tăi.
- Realtime: Ascultă modificările bazei de date în timp real.
Bază de Date PostgreSQL
Inima Supabase este PostgreSQL, o bază de date relațională robustă și extensibilă. Supabase îți oferă o instanță PostgreSQL complet gestionată, cu instrumente care simplifică interacțiunea cu ea.
Caracteristici Cheie:
- API-uri Automate: PostgREST transformă baza ta de date într-un API RESTful instantaneu.
- GraphQL: Suport pentru GraphQL prin pg_graphql.
- Extensii: Acces la o gamă largă de extensii PostgreSQL, cum ar fi PostGIS, pg_cron, etc.
- Row Level Security (RLS): Controlează accesul la date la nivel de rând, direct din baza de date.
- Interfață Web: Un tablou de bord intuitiv pentru a gestiona tabelele, datele și utilizatorii.
Exemplu de Interogare (SQL):
CREATE TABLE public.todos (
id serial primary key,
task text,
is_complete boolean default false,
user_id uuid references auth.users
);
INSERT INTO public.todos (task, user_id)
VALUES ('Învață Supabase', 'a1b2c3d4-e5f6-7890-1234-567890abcdef');
SELECT * FROM public.todos WHERE user_id = 'a1b2c3d4-e5f6-7890-1234-567890abcdef';
Autentificare
Supabase Auth oferă o soluție completă și securizată pentru gestionarea utilizatorilor, cu suport pentru diverse metode de autentificare.
Metode de Autentificare:
- Email și Parolă: Metoda clasică de înregistrare și autentificare.
- OAuth: Integrare ușoară cu furnizori populari precum Google, GitHub, Facebook, etc.
- Magic Link: Autentificare fără parolă, prin trimiterea unui link unic pe email.
- Număr de Telefon: Autentificare prin SMS.
Exemplu de Cod (JavaScript):
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
const supabase = createClient(supabaseUrl, supabaseAnonKey);
async function signUpNewUser(email, password) {
const { data, error } = await supabase.auth.signUp({
email: email,
password: password,
});
if (error) console.error('Eroare la înregistrare:', error.message);
else console.log('Utilizator înregistrat cu succes:', data);
}
async function signInWithEmail(email, password) {
const { data, error } = await supabase.auth.signInWithPassword({
email: email,
password: password,
});
if (error) console.error('Eroare la autentificare:', error.message);
else console.log('Utilizator autentificat:', data);
}
// Exemplu de utilizare:
// signUpNewUser('test@example.com', 'parola_secreta');
// signInWithEmail('test@example.com', 'parola_secreta');
Stocare de Fișiere
Supabase Storage oferă o modalitate simplă și scalabilă de a stoca și gestiona fișierele utilizatorilor, cum ar fi imagini, videoclipuri și documente.
Caracteristici:
- Buckets: Organizează-ți fișierele în containere logice.
- Control Acces: Definește reguli de securitate pentru accesul la fișiere.
- CDN: Livrare rapidă a conținutului prin rețeaua globală de livrare a conținutului.
Exemplu de Cod (JavaScript):
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
const supabase = createClient(supabaseUrl, supabaseAnonKey);
async function uploadFile(bucketName, filePath, file) {
const { data, error } = await supabase.storage
.from(bucketName)
.upload(filePath, file);
if (error) console.error('Eroare la încărcare fișier:', error.message);
else console.log('Fișier încărcat cu succes:', data);
}
async function downloadFile(bucketName, filePath) {
const { data, error } = await supabase.storage
.from(bucketName)
.download(filePath);
if (error) console.error('Eroare la descărcare fișier:', error.message);
else console.log('Fișier descărcat cu succes:', data);
return data;
}
// Exemplu de utilizare:
// const myFile = new File(["conținutul fișierului"], "exemplu.txt", { type: "text/plain" });
// uploadFile('imagini', 'public/exemplu.txt', myFile);
// downloadFile('imagini', 'public/exemplu.txt');
Funcții Edge
Supabase Edge Functions sunt funcții fără server, implementate la nivel global, care îți permit să rulezi cod backend aproape de utilizatorii tăi, reducând latența.
Beneficii:
- Performanță: Răspunsuri rapide datorită execuției la marginea rețelei.
- Scalabilitate: Se scalează automat în funcție de cerere.
- Flexibilitate: Scrie funcții în TypeScript/JavaScript.
Exemplu de Cod (TypeScript - Funcție Edge):
// functions/hello-world.ts
import { serve } from 'https://deno.land/std@0.168.0/http/server.ts';
serve(async (req) => {
const { name } = await req.json();
const data = {
message: `Salut, ${name} de la o Funcție Edge Supabase!`,
};
return new Response(
JSON.stringify(data),
{ headers: { 'Content-Type': 'application/json' } },
);
});
Realtime
Supabase Realtime îți permite să asculți modificările bazei de date în timp real, facilitând construirea de aplicații interactive și colaborative.
Cum Funcționează:
- Se bazează pe WebSockets.
- Poți asculta inserări, actualizări, ștergeri sau modificări specifice.
- Integrare perfectă cu Row Level Security.
Exemplu de Cod (JavaScript):
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
const supabase = createClient(supabaseUrl, supabaseAnonKey);
// Ascultă inserări noi în tabelul 'todos'
supabase
.channel('schema-db-changes')
.on(
'postgres_changes',
{ event: 'INSERT', schema: 'public', table: 'todos' },
(payload) => {
console.log('Modificare detectată (INSERT):', payload);
}
)
.subscribe();
// Ascultă toate modificările (INSERT, UPDATE, DELETE) în tabelul 'todos'
supabase
.channel('todos-all-changes')
.on(
'postgres_changes',
{ event: '*', schema: 'public', table: 'todos' },
(payload) => {
console.log('Orice modificare în todos:', payload);
}
)
.subscribe();
console.log('Abonat la modificările bazei de date...');
Supabase CLI
Supabase CLI este un instrument de linie de comandă care te ajută să gestionezi proiectele Supabase local și să le sincronizezi cu mediul tău de dezvoltare.
Comenzi Utile:
supabase init
: Inițializează un nou proiect Supabase local.supabase start
: Pornește serviciile Supabase local.supabase stop
: Oprește serviciile Supabase local.supabase db diff
: Generează migrații SQL bazate pe modific ările schemei.supabase db push
: Aplică migrațiile la baza de date.supabase functions deploy
: Implementează funcțiile Edge.
Instalare:
# Instalare prin npm
npm install -g supabase
# Sau prin Homebrew (macOS)
brew install supabase/tap/supabase
# Verifică instalarea
supabase --version
Platforma Supabase
Platforma Supabase oferă un tablou de bord web intuitiv pentru gestionarea proiectelor, monitorizarea performanței și configurarea serviciilor.
Funcționalități Cheie:
- Editor de Tabele: Creează și modifică tabelele direct din browser.
- Editor SQL: Rulează interogări SQL complexe cu un editor avansat.
- Gestionare Utilizatori: Vizualizează și gestionează utilizatorii aplicației.
- Monitorizare: Urmărește performanța și utilizarea resurselor.
- Setări Proiect: Configurează API keys, webhook-uri și alte setări.
- Backup și Restore: Creează backup-uri automate și restaurează datele.
Planuri de Preț:
- Free Tier: Perfect pentru prototipuri și proiecte mici.
- Pro: Pentru aplicații în producție cu trafic moderat.
- Team: Pentru echipe cu nevoi de colaborare avansate.
- Enterprise: Pentru organizații mari cu cerințe specifice.
Resurse Suplimentare
Pentru a afla mai multe despre Supabase și pentru a rămâne la curent cu ultimele noutăți: