Cloudflare Pages에 올릴 수 있는 꿈해몽 사이트입니다. 프런트는 Vite + Vanilla TypeScript, 서버는 Pages Functions를 사용하고, AI API(OpenAI 또는 Google Gemini)는 서버측에서만 호출합니다. OPENAI_API_KEY가 설정되면 OpenAI를 사용하고, 그렇지 않으면 GEMINI_API_KEY로 Google Gemini를 사용합니다. 둘 다 없으면 내장 fallback 해석이 제공됩니다.
- 메인 랜딩 페이지와 꿈해몽 입력 폼
- 입력 품질 점수, 포커스 선택, 결과 깊이 선택
- 초안 자동 저장/복원과 최근 리딩 저장
- 최근 리딩 검색/필터와 이전 결과 비교 카드
- 최근 리딩 JSON 내보내기
- 요약 복사, 공유, 입력 재사용 액션
/api/interpretPages Function/api/review-packreviewer-facing abuse/control contract- 소개, 개인정보 처리방침, 문의, 상징 모음 정적 페이지
wrangler.toml,.dev.vars.example,.env.example,ads.txt,_headers
npm install
cp .dev.vars.example .dev.vars
cp .env.example .env.local
npm run build
npm run cf:dev브라우저에서 http://127.0.0.1:8788로 확인할 수 있습니다.
OPENAI_API_KEY: 선택 사항. OpenAI API 키 (설정하면 OpenAI를 우선 사용)OPENAI_MODEL: 선택 사항. 기본값은gpt-5.2GEMINI_API_KEY: 선택 사항. Google Gemini API 키 (OPENAI_API_KEY가 없을 때 사용)GEMINI_MODEL: 선택 사항. 기본값은gemini-2.5-flashSITE_NAME: 사이트 브랜드명TURNSTILE_SECRET_KEY: 선택 사항. 설정하면 폼 제출 전에 Turnstile 검증을 강제합니다.RATE_LIMITER: 선택 사항. Cloudflare KV 바인딩을 붙이면 분당 요청 제한이 isolate 간에도 더 안정적으로 유지됩니다.VITE_TURNSTILE_SITE_KEY: 선택 사항. 프런트엔드 위젯 렌더링용 값입니다..env.local또는 Pages 빌드 환경변수로 넣습니다.
- Cloudflare 대시보드에서 Pages 프로젝트를 만듭니다.
- 빌드 명령은
npm run build, 출력 디렉터리는dist로 설정합니다. - Pages 프로젝트의
Settings -> Environment variables에 AI 키(OPENAI_API_KEY또는GEMINI_API_KEY), 모델명,SITE_NAME를 추가합니다. - 공개 트래픽에서 비용 남용을 막고 싶다면 Turnstile 위젯을 만들고
TURNSTILE_SECRET_KEY,VITE_TURNSTILE_SITE_KEY도 같이 등록합니다. - 가능하면 KV 바인딩
RATE_LIMITER도 추가하세요. - Git 연동 없이 배포하려면:
npm run build
npx wrangler pages deploy dist --project-name <your-project-name>contact.html의 플레이스홀더 이메일- 실제 도메인 기준의 개인정보 처리 문구
public/ads.txt의 퍼블리셔 ID- 자체 편집 콘텐츠 추가
- 운영자 정보와 브랜드 문구 구체화
- 상징 문서와 검색 유입용 원본 글 축적
AI가 만든 얇은 문서만으로는 AdSense 승인과 유지가 어렵습니다. 꿈 상징 사전, 운영자 소개, FAQ, 실제 문의 채널 같은 신뢰 신호를 함께 쌓는 편이 낫습니다.
OPENAI_API_KEY와GEMINI_API_KEY는vars가 아니라 secret으로 등록하세요.- API에는 분당 6회 기본 제한이 걸려 있고,
RATE_LIMITERKV를 붙이면 좀 더 안정적인 서버측 제한이 가능합니다. /api/review-pack에서 abuse posture, model contract, fail-closed 조건을 한 번에 검토할 수 있습니다.- 공개 배포에서는
TURNSTILE_SECRET_KEY또는RATE_LIMITER가 없으면 AI 엔드포인트가 fail-closed 되도록 되어 있습니다. public/_headers에 기본 보안 헤더를 넣었습니다. 추후 Turnstile이나 AdSense를 확장하면 허용 도메인을 같이 조정해야 합니다.
.env.local 예시:
VITE_TURNSTILE_SITE_KEY=1x00000000000000000000AACloudflare Pages 런타임 환경변수 예시:
TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AAnpm run check
npm run buildOPENAI_API_KEY또는GEMINI_API_KEY를 Pages secret으로 등록- 필요하면
TURNSTILE_SECRET_KEY,VITE_TURNSTILE_SITE_KEY연결 contact.html의 이메일과 운영 정보 교체public/ads.txt실제 퍼블리셔 값 반영- 결과 품질을 실 API 키(OpenAI 또는 Gemini)로 한 번 이상 확인
npx wrangler pages deploy dist --project-name <your-project-name>실행
This repository includes a neutral cloud and AI engineering blueprint that maps the current proof surface to runtime boundaries, data contracts, model-risk controls, deployment posture, and validation hooks.
- Cloud + AI architecture blueprint
- Machine-readable architecture manifest
- Validation command:
python3 scripts/validate_architecture_blueprint.py