Appearance
Supabase 프로젝트 생성 및 웹 앱 설정 가이드
Loafacto-Hub web-ui에서 로그인·회원가입·프로필(닉네임/사진)을 쓰려면 Supabase 프로젝트를 만들고, URL과 API 키를 앱에 넣어야 합니다.
1. Supabase 프로젝트 만들기
- Supabase에 로그인 후 Start your project 로 대시보드에 접속합니다.
- New project 클릭.
- 다음을 입력한 뒤 Create new project 로 생성합니다.
- Organization: 본인 조직 선택 (없으면 새로 생성).
- Name: 프로젝트 이름 (예:
loafacto-hub). - Database Password: DB 비밀번호 (안전하게 저장해 두세요).
- Region: 가까운 리전 선택 (예: Northeast Asia (Seoul)).
프로젝트가 준비될 때까지 1~2분 정도 걸릴 수 있습니다.
2. URL과 API 키 확인하기
- 왼쪽 메뉴에서 Settings (톱니바퀴) → API 로 이동합니다.
- Project URL 과 Project API keys 를 확인합니다.
- Project URL:
https://xxxxxxxxxxxx.supabase.co형태입니다. - anon public 키: 공개용 클라이언트 키입니다. 이 키를 사용합니다.
service_role키는 서버 전용이며, 웹 앱이나 클라이언트 코드에 넣으면 안 됩니다.
- Project URL:
이 두 값(URL + anon key)을 복사해 두세요.
3. 인증(Authentication) URL 설정 (선택이지만 권장)
로그인/회원가입 후 리다이렉트와 비밀번호 재설정 링크가 올바른 도메인으로 가도록 설정합니다.
- 왼쪽 메뉴 Authentication → URL Configuration 으로 이동합니다.
- Site URL 에 실제 접속 주소를 넣습니다.
- 로컬 개발:
http://localhost:5173(Vite 기본 포트) - 배포 도메인:
https://your-domain.com등
- 로컬 개발:
- Redirect URLs 에 허용할 주소를 추가합니다.
- 로컬:
http://localhost:5173/** - 필요 시
http://localhost:5173만 넣어도 됩니다. - 배포 시에는
https://your-domain.com/**형태로 추가합니다.
- 로컬:
저장 후 Authentication → Providers 에서 Email 등 사용할 로그인 방식을 켜 두면 됩니다.
4. 웹 앱(web-ui)에 설정 넣기
저장소 루트에서 web-ui 앱 폴더로 이동합니다.
textloafacto-hub/apps/web-ui/.env파일을 만듭니다 (이미 있으면 수정합니다)..env.example이 있다면 복사해서 사용해도 됩니다.bashcp .env.example .env
아래 두 변수에 2단계에서 복사한 값을 넣습니다.
envVITE_SUPABASE_URL=https://xxxxxxxxxxxx.supabase.co VITE_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9....VITE_SUPABASE_URL: Project URL 그대로.VITE_SUPABASE_ANON_KEY: anon public 키 그대로 (따옴표 없이 한 줄).
저장한 뒤, 개발 서버를 다시 띄웁니다.
bashnpm run dev- Vite는
.env변경 시 재시작이 필요할 수 있으므로, 변경 후 한 번 다시 실행하는 것이 안전합니다.
- Vite는
5. 주의사항
.env파일에는 비밀 키가 들어가므로 절대 Git에 커밋하지 마세요.
이 프로젝트에는 이미.gitignore에.env가 포함되어 있습니다..env.example에는 실제 키 없이 변수 이름과 예시만 넣어 두고, 이 파일만 커밋해 두면 팀원이 어떤 값을 넣어야 하는지 알 수 있습니다.- anon key는 브라우저에 노출되어도 괜찮은 공개용 키입니다.
service_role 키는 서버에서만 사용하고, 클라이언트나 공개 저장소에 넣지 마세요.
6. 이후 설정 (기능별)
Supabase 프로젝트와 URL·API 키 설정이 끝나면, 아래 문서대로 DB/Storage를 추가로 설정할 수 있습니다.
| 문서 | 내용 |
|---|---|
| 02. supabase-profiles.sql) | 프로필(닉네임) 테이블 및 RPC (닉네임 중복 검사·저장) |
| 03. supabase-storage-avatars.md) | 프로필 사진용 Storage 버킷(avatars) 설정 |
| 15. supabase-withdraw-account.sql) | 회원 탈퇴(profiles.status) 및 RPC |
위 순서대로 적용하면, 웹 앱에서 로그인/회원가입, 닉네임 변경, 프로필 사진 변경이 동작합니다.
7. 프로필 저장 시 403 Forbidden이 날 때
PUT .../auth/v1/user 요청이 403 (Forbidden) 이면 Supabase Auth가 사용자 정보 갱신을 거부한 상태입니다.
확인할 것
| 원인 | 확인 위치 | 조치 |
|---|---|---|
| 이메일 미인증 | Authentication → Users → 해당 사용자 | "Confirm email"가 켜져 있으면, Authentication → Providers → Email 에서 "Confirm email"를 끄거나, 사용자에게 인증 메일에서 링크 클릭하도록 안내. |
| 세션 만료 | (앱에서 확인) | 로그인한 지 오래됐으면 다시 로그인 후 프로필 저장 시도. |
| JWT/키 문제 | Settings → API, .env | anon key가 Project API keys의 anon public과 동일한지 확인. |
앱 동작
403이 나면 프로필 편집 모달에
"권한이 없거나 세션이 만료되었을 수 있습니다. 다시 로그인한 뒤 시도해 주세요."
메시지가 표시됩니다. 다시 로그인한 뒤 저장을 시도해 보세요.