개인 포트폴리오/블로그 사이트입니다.
SvelteKit + Cloudflare Workers + D1 기반으로 동작하며, Notion 데이터를 주기적으로 동기화해 프로젝트/블로그 콘텐츠를 서비스합니다.
- 프로젝트 설정 방법 이외의 내용은 hchu.me 프로젝트 상세 페이지를 참고해주세요.
pnpm installpnpm devpnpm previewpnpm build
pnpm deploySYNC_SECRET: 수동 동기화 API 인증 토큰NOTION_TOKEN: Notion API 토큰NOTION_PROJECTS_DATA_SOURCE_IDNOTION_BLOGS_DATA_SOURCE_IDNOTION_TECHS_DATA_SOURCE_IDDB(D1 바인딩)
민감 정보는 wrangler secret으로 설정하거나, 개발 중에는 .env 파일에 저장할 수 있습니다.
wrangler secret put NOTION_TOKEN
wrangler secret put SYNC_SECRETpnpm db:generate
pnpm db:migrate:local
pnpm db:migrate:remotewrangler.jsonc의 Cron Trigger에 따라scheduled핸들러가 실행되어 동기화를 수행합니다.
- 엔드포인트:
POST /api/sync - 인증:
Authorization: Bearer <SYNC_SECRET>
예시:
curl -X POST http://localhost:8787/api/sync \
-H "Authorization: Bearer <SYNC_SECRET>"동기화 로직은 아래 속성명을 기준으로 데이터를 읽습니다.
- 상태:
상태(완료만 동기화) - 제목:
이름 - 슬러그:
별명 - 설명:
설명 - 기술 스택:
기술 스택 - GitHub:
GitHub - 웹사이트:
웹사이트
Notion 데이터소스의 컬럼 이름이 다르면 동기화가 정상 동작하지 않을 수 있습니다.