import { createClient, SupabaseClient } from '@supabase/supabase-js' // Environment variables const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL! const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY! // Client-side Supabase client export const supabase: SupabaseClient = createClient(supabaseUrl, supabaseAnonKey, { auth: { autoRefreshToken: true, persistSession: true, detectSessionInUrl: true } }) // Server-side Supabase client (for use in API routes) export const createServerSupabaseClient = () => { const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY if (!serviceRoleKey) { throw new Error('SUPABASE_SERVICE_ROLE_KEY is not set') } return createClient(supabaseUrl, serviceRoleKey, { auth: { autoRefreshToken: false, persistSession: false } }) } // Auth helpers export const signInWithGoogle = async () => { const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'google', options: { redirectTo: `${window.location.origin}/auth/callback` } }) return { data, error } } export const signInWithGitHub = async () => { const { data, error } = await supabase.auth.signInWithOAuth({ provider: 'github', options: { redirectTo: `${window.location.origin}/auth/callback` } }) return { data, error } } export const getCurrentUser = async () => { const { data: { user }, error } = await supabase.auth.getUser() return { user, error } } export const getSession = async () => { const { data: { session }, error } = await supabase.auth.getSession() return { session, error } }