Rulebook

Claude Rules 관리

문서맵
  • component-design
  • entities-api
  • entities-layer
  • entities-model
  • error-handling
  • features-layer
  • fsd-architecture
  • react-hooks
    1
  • security
  • server-components
  • shared-layer
  • tailwind-css
  • tanstack-query
  • testing
  • views-layer
  • widget-layer
  • changelog
  • development-workflow
  • documentation
  • git-commit
  • marketing-seo
  • marketing-ux
  • naming-convention
  • security
  • typescript-standards
  • ux-copy-and-tone
  • api-design
  • database
  • nest
  • security
  • supabase
  • README
전체 룰 다운로드
back/supabase
activev12026. 4. 12.

description: "Supabase 사용 시 패턴 (PostgreSQL + Supabase SDK). Prisma 대신 Supabase를 사용하는 프로젝트에 적용." paths:

  • "**/supabase"
  • "**/*.supabase.ts"

Supabase Guidelines

Prisma 대신 Supabase를 사용할 때 적용한다.

클라이언트 초기화

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

const supabase = createClient(
  process.env.SUPABASE_URL,
  process.env.SUPABASE_SERVICE_ROLE_KEY, // 서버에서는 service_role 키 사용
);

쿼리 패턴

// 조회
const { data, error } = await supabase
  .from('users')
  .select('*, groups(*)')
  .eq('id', userId)
  .single();

if (error) throw new Error(error.message);

// 삽입
const { data, error } = await supabase
  .from('users')
  .insert({ email, name })
  .select()
  .single();

에러 처리

Supabase 쿼리는 항상 error를 체크한다.

const { data, error } = await supabase.from('users').select();
if (error) throw new Error(error.message);

RLS (Row Level Security)

  • 서버 측: service_role 키로 RLS 우회 가능
  • 클라이언트 측: anon 키 + RLS 정책으로 접근 제어
  • 민감한 작업은 항상 서버에서 처리

Storage

const { data, error } = await supabase.storage
  .from('bucket-name')
  .upload('path/file.png', file);

피드백 0

아직 피드백이 없어요. 첫 번째로 의견을 남겨보세요!

목차

클라이언트 초기화쿼리 패턴에러 처리RLS (Row Level Security)Storage