주요 변경사항: • 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>
73 lines
2.0 KiB
JSON
73 lines
2.0 KiB
JSON
{
|
|
"buildCommand": "npm run build",
|
|
"outputDirectory": "dist",
|
|
"devCommand": "npm run dev",
|
|
"installCommand": "npm install",
|
|
"framework": "vite",
|
|
"rewrites": [
|
|
{
|
|
"source": "/(.*)",
|
|
"destination": "/index.html"
|
|
}
|
|
],
|
|
"headers": [
|
|
{
|
|
"source": "/(.*).(js|css|woff2?|ttf|eot|svg|ico|png|jpg|jpeg|gif|webp|avif)",
|
|
"headers": [
|
|
{
|
|
"key": "Cache-Control",
|
|
"value": "public, max-age=31536000, immutable"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"source": "/(.*)",
|
|
"headers": [
|
|
{
|
|
"key": "X-Content-Type-Options",
|
|
"value": "nosniff"
|
|
},
|
|
{
|
|
"key": "X-Frame-Options",
|
|
"value": "DENY"
|
|
},
|
|
{
|
|
"key": "X-XSS-Protection",
|
|
"value": "1; mode=block"
|
|
},
|
|
{
|
|
"key": "Referrer-Policy",
|
|
"value": "strict-origin-when-cross-origin"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"env": {
|
|
"VITE_APPWRITE_ENDPOINT": "@vite_appwrite_endpoint",
|
|
"VITE_APPWRITE_PROJECT_ID": "@vite_appwrite_project_id",
|
|
"VITE_APPWRITE_DATABASE_ID": "@vite_appwrite_database_id",
|
|
"VITE_APPWRITE_TRANSACTIONS_COLLECTION_ID": "@vite_appwrite_transactions_collection_id",
|
|
"VITE_APPWRITE_API_KEY": "@vite_appwrite_api_key",
|
|
"VITE_DISABLE_LOVABLE_BANNER": "@vite_disable_lovable_banner",
|
|
"VITE_SENTRY_DSN": "@vite_sentry_dsn",
|
|
"VITE_SENTRY_ENVIRONMENT": "@vite_sentry_environment"
|
|
},
|
|
"build": {
|
|
"env": {
|
|
"VITE_APPWRITE_ENDPOINT": "@vite_appwrite_endpoint",
|
|
"VITE_APPWRITE_PROJECT_ID": "@vite_appwrite_project_id",
|
|
"VITE_APPWRITE_DATABASE_ID": "@vite_appwrite_database_id",
|
|
"VITE_APPWRITE_TRANSACTIONS_COLLECTION_ID": "@vite_appwrite_transactions_collection_id",
|
|
"VITE_APPWRITE_API_KEY": "@vite_appwrite_api_key",
|
|
"VITE_DISABLE_LOVABLE_BANNER": "@vite_disable_lovable_banner",
|
|
"VITE_SENTRY_DSN": "@vite_sentry_dsn",
|
|
"VITE_SENTRY_ENVIRONMENT": "@vite_sentry_environment"
|
|
}
|
|
},
|
|
"functions": {
|
|
"app/*": {
|
|
"includeFiles": "dist/**"
|
|
}
|
|
}
|
|
}
|