🚀 Getting Started

Installation

# Install Supabase CLI
brew install supabase/tap/supabase

# Install JS Client
npm install @supabase/supabase-js

# Login to CLI
supabase login

📝 Client Setup

JavaScript/TypeScript Setup

import { createClient } from '@supabase/supabase-js'

const supabase = createClient(
  'https://your-project.supabase.co',
  'your-anon-key'
)

🔍 Data Queries

Basic Queries

// Select all
const { data, error } = await supabase
  .from('table_name')
  .select()

// Select specific columns
const { data } = await supabase
  .from('table_name')
  .select('column1, column2')

// Filter results
const { data } = await supabase
  .from('table_name')
  .select()
  .eq('column', 'value')

// Order results
const { data } = await supabase
  .from('table_name')
  .select()
  .order('column', { ascending: true })

📥 Data Modification

// Insert data
const { data, error } = await supabase
  .from('table_name')
  .insert([{ column: 'value' }])

// Update data
const { data, error } = await supabase
  .from('table_name')
  .update({ column: 'new_value' })
  .eq('id', 1)

// Delete data
const { data, error } = await supabase
  .from('table_name')
  .delete()
  .eq('id', 1)

👤 Authentication

// Sign up
const { user, error } = await supabase.auth.signUp({
  email: 'example@email.com',
  password: 'password'
})

// Sign in
const { user, error } = await supabase.auth.signIn({
  email: 'example@email.com',
  password: 'password'
})

// Sign out
const { error } = await supabase.auth.signOut()

// Get user
const user = supabase.auth.user()

📁 Storage

// Upload file
const { data, error } = await supabase
  .storage
  .from('bucket')
  .upload('file.pdf', file)

// Download file
const { data, error } = await supabase
  .storage
  .from('bucket')
  .download('file.pdf')

// Delete file
const { data, error } = await supabase
  .storage
  .from('bucket')
  .remove(['file.pdf'])

🔄 Real-time Subscriptions

// Subscribe to changes
const subscription = supabase
  .from('table_name')
  .on('*', payload => {
    console.log('Change received!', payload)
  })
  .subscribe()

// Unsubscribe
subscription.unsubscribe()

💡 Pro Tips

  • Use Row Level Security (RLS) for data protection
  • Leverage PostgreSQL functions for complex operations
  • Use policies for fine-grained access control
  • Enable realtime only for necessary tables
  • Use foreign keys for data integrity