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: