// project
ACTIVE 2026. 04. 24. — 진행 중
std::N 개인 홈페이지
Astro 정적 + Cloudflare Pages Functions + D1 로 만든 포트폴리오 겸 블로그. 직접 만든 admin CMS 와 Gemini 기반 AI 에디터 내장.
AstroTypeScriptCloudflare PagesPages FunctionsD1Gemini AIPagefind
왜 만들었나#
기존 정적 HTML 4페이지 포트폴리오를 확장하면서, “블로그·프로젝트·PS 풀이” 를 한 곳에서 일관된 디자인으로 보여주고 싶었다. 글쓰기도 쉬워야 하고, 배포도 단순해야 했다.
핵심 결정#
- Astro — Markdown 콘텐츠에 최적화, View Transitions 내장
- Cloudflare Pages — 푸시 = 배포, 무료 tier 넉넉
- Pagefind — 정적 검색 인덱스, DB 불필요
- Content Collections — 글이 git 에 버전 관리됨
구조#
src/
content/blog/ 마크다운 글
content/projects/ 프로젝트 설명
layouts/ BaseLayout, BlogLayout
components/ Header, CommandPalette, TOC, ...
pages/ 라우트
추가로 구축한 것#
- Admin CMS — PBKDF2 비밀번호 + HMAC 세션 쿠키(Web Crypto, npm 의존 없음),
/admin/login→ 포스트 CRUD - VS 스타일 에디터 — 라이브 마크다운 프리뷰, 자동 저장, 태그 칩, 단축키 (
Ctrl+S/Ctrl+K/Ctrl+Shift+R/Ctrl+Shift+F) - Gemini AI 보조 — 인라인 이어쓰기, 자연스럽게 다듬기, 사실/문법 수정. 서버 프록시로 API 키 노출 차단
- D1 ↔ 정적 MD 혼합 라우팅 — 같은
/blog/:slug에서 Pages Function 이 D1 조회, 없으면 정적 MD 로 fall-through
앞으로#
- D1 기반 방명록·조회수 활성화
- Resend 기반 contact 폼
- OG 이미지 자동 생성 (Workers)