되고 싶은 사람을 설정하고, 매일 그 사람처럼 살아가도록 돕는 자기계발 웹 서비스.
cp .env.example .env.env 파일을 열고 아래 항목을 채우세요:
| 항목 | 어디서 발급 |
|---|---|
| ANTHROPIC_API_KEY | https://console.anthropic.com |
| SUPABASE_URL / SUPABASE_KEY | https://supabase.com > 프로젝트 > Settings > API |
| GOOGLE_CLIENT_ID / SECRET | https://console.cloud.google.com > API 및 서비스 > 사용자 인증 정보 |
| SECRET_KEY | 아무 랜덤 문자열 32자 이상 |
Google OAuth 설정 시 리디렉션 URI에 꼭 추가하세요:
http://localhost:8000/auth/callback
Supabase 대시보드 > SQL Editor > schema.sql 파일 전체 복붙 > Run
# 패키지 설치
pip install -r requirements.txt
# 서버 실행
uvicorn main:app --reload --port 8000브라우저에서 http://localhost:8000 접속
vision_become/
├── main.py # FastAPI 앱 진입점
├── config.py # 환경변수
├── auth.py # 세션 + 구글 OAuth
├── database.py # Supabase 클라이언트
├── claude_api.py # Claude API (온보딩 + 묘사글 업데이트만)
├── schema.sql # Supabase 테이블 생성 SQL
├── requirements.txt
├── .env.example
├── routers/
│ ├── auth_router.py # /auth/login, /auth/callback, /auth/logout
│ ├── onboarding_router.py # /onboarding
│ ├── home_router.py # /home
│ ├── character_router.py # /character + API
│ ├── habits_router.py # /habits + API
│ ├── ifthen_router.py # /ifthen + API
│ └── journal_router.py # /journal + API
├── templates/
│ ├── base.html # 공통 레이아웃 + 하단 탭
│ ├── landing.html
│ ├── onboarding.html
│ ├── home.html
│ ├── character.html
│ ├── habits.html
│ ├── ifthen.html
│ └── journal.html
└── static/
├── css/style.css # 전체 디자인 시스템
├── js/app.js # 공통 유틸
└── images/uploads/ # 업로드 이미지 저장
가입 1회 + 유저가 묘사글 업데이트 버튼 눌렀을 때만 호출. 사실상 거의 0원.
- GitHub에 푸시
- Render > New Web Service > GitHub 연결
- Start Command:
uvicorn main:app --host 0.0.0.0 --port $PORT - Environment Variables에
.env내용 그대로 입력 .env의BASE_URL을 Render 앱 URL로 변경- Google OAuth 리디렉션 URI에
https://your-app.onrender.com/auth/callback추가