supabase는 데이터베이스와 인증 같은 백엔드 기능을 제공하는 서비스야.
프론트엔드 개발자가 복잡한 서버 작업 없이 바로 사용할 수 있도록 도와주고, PostgreSQL 기반이라 데이터베이스를 강력하게 활용할 수 있어.
1. Database(데이터베이스)
2. Authentication(인증)
3. Storage(스토리지)
4. Realtime(실시간)
5. API 자동 생성
6. 호스팅
1️⃣ 데이터베이스 CRUD
Supabase에서 테이블을 생성하고 데이터를 추가, 조회, 수정, 삭제 가능.
// 데이터 조회 예시 const { data, error } = await supabase .from('table_name') // 테이블 이름 .select('*'); // 모든 데이터 가져오기🙌 insert([{ ... }]): 데이터 추가, select('*'): 데이터 조회 , update({ ... }).eq('id', ...): 데이터 수정, delete().eq('id', ...): 데이터 삭제
2️⃣ 사용자 인증 (로그인/회원가입)
// 이메일 회원가입 const { user, error } = await supabase.auth.signUp({ email: 'example@example.com', password: 'password123', }); // 이메일 로그인 const { session, error } = await supabase.auth.signInWithPassword({ email: 'example@example.com', password: 'password123', }); // 로그아웃 await supabase.auth.signOut();🙌 supabaseAuth는 추가로 정리할 예정!!
3️⃣ 소셜 로그인
Supabase 대시보드에서 Authentication → Providers에서 Kakao, Google 등을 활성화하하면 됨.
// 소셜 로그인 (예: Google) const { user, error } = await supabase.auth.signInWithOAuth({ provider: 'google', });🙌 소셜로그인도 추가로 정리할 예정!!
4️⃣ 파일 업로드 (Storage)
이미지나 파일을 업로드하고 다운로드 가능.
// 파일 업로드 const { data, error } = await supabase.storage .from('bucket_name') // 스토리지 버킷 이름 .upload('path/to/file', file);🙌 추가로 정리할 예정!!
5️⃣ 실시간 데이터 업데이트
테이블의 데이터가 변경되면 실시간으로 반영 가능.
supabase .channel('public:table_name') .on('postgres_changes', { event: '*', schema: 'public', table: 'table_name' }, (payload) => { console.log('Change received!', payload); }) .subscribe();
6️⃣ Next.js와 통합
Supabase는 Next.js와 잘 어울려요. getServerSideProps나 middleware와 함께 사용하면 서버에서 인증 상태를 확인하거나 데이터를 미리 가져올 수 있음.
export async function getServerSideProps(context) { const { data: user } = await supabase.auth.getUser(); if (!user) { return { redirect: { destination: '/login', permanent: false } }; } return { props: { user } }; }🙌 middleware도 추가로 정리 예정!!