feat: Clerk + Supabase 통합 시스템 구현 완료

주요 변경사항:
• Clerk 인증 시스템 통합 및 설정
• Supabase 데이터베이스 스키마 설계 및 적용
• JWT 기반 Row Level Security (RLS) 정책 구현
• 기존 Appwrite 인증을 Clerk로 완전 교체

기술적 개선:
• 무한 로딩 문제 해결 - Index.tsx 인증 로직 수정
• React root 마운팅 오류 수정 - main.tsx 개선
• CORS 설정 추가 - vite.config.ts 수정
• Sentry 에러 모니터링 통합

추가된 컴포넌트:
• AuthGuard: 인증 보호 컴포넌트
• SignIn/SignUp: Clerk 기반 인증 UI
• ClerkProvider: Clerk 설정 래퍼
• EnvTest: 개발환경 디버깅 도구

데이터베이스:
• user_profiles, transactions, budgets, category_budgets 테이블
• Clerk JWT 토큰 기반 RLS 정책
• 자동 사용자 프로필 생성 및 동기화

Task Master:
• Task 11.1, 11.2, 11.4 완료
• 프로젝트 관리 시스템 업데이트

Note: ESLint 정리는 별도 커밋에서 진행 예정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
hansoo
2025-07-13 14:01:27 +09:00
parent e72f9e8d26
commit c231d5be65
59 changed files with 5974 additions and 751 deletions

View File

@@ -82,20 +82,21 @@ window.addEventListener("unhandledrejection", function (event) {
logger.info("환경 변수:", {
NODE_ENV: import.meta.env.MODE,
BASE_URL: import.meta.env.BASE_URL,
APPWRITE_ENDPOINT: import.meta.env.VITE_APPWRITE_ENDPOINT,
APPWRITE_PROJECT_ID: import.meta.env.VITE_APPWRITE_PROJECT_ID,
SUPABASE_URL: import.meta.env.VITE_SUPABASE_URL,
CLERK_PUBLISHABLE_KEY:
import.meta.env.VITE_CLERK_PUBLISHABLE_KEY?.substring(0, 20) + "...",
});
// 상태 확인
// TypeScript에서 window 객체에 사용자 정의 속성 추가
declare global {
interface Window {
appwriteEnabled: boolean;
supabaseEnabled: boolean;
}
}
// 기본적으로 Appwrite 활성화
window.appwriteEnabled = false;
// Supabase 활성화
window.supabaseEnabled = true;
try {
const rootElement = document.getElementById("root");
@@ -103,6 +104,11 @@ try {
throw new Error("Root element not found");
}
// 기존 React root가 있다면 제거
if (rootElement.innerHTML.trim()) {
rootElement.innerHTML = "";
}
const root = createRoot(rootElement);
root.render(