설정
시스템 정보 및 환경.
스택
- 런타임
- Cloudflare Workers (V8 isolate, edge)
- 언어
- Rust 2024 → cdylib → wasm32-unknown-unknown
- HTTP
- workers-rs 0.8 (Router)
- 템플릿
- maud 0.27 (컴파일타임 매크로, 자동 escape)
- 클라
- HTMX 2.0.6 + ext-preload + idiomorph (CDN, ~16KB)
- DB
- D1 (edge SQLite, prepared statement, RETURNING, batch)
- 스타일
- vanilla CSS —
@layer,light-dark(),color-mix(), container queries, Open Props 토큰
패턴
- 렌더링
- SSR (서버가 HTML 응답)
- 인터랙션
- Hypermedia (HTML fragment 응답 → DOM swap)
- 상태 위치
- 서버 (D1) — 클라 store 없음
- OOB swap
- 응답에 다중 fragment — 카운트 뱃지 동기 갱신
- 다크모드
color-scheme: light dark+light-dark()- 페이지 이동
hx-boost+ hover preload (인위 지연 0)- 페이지네이션
- keyset cursor (
WHERE id < ?) + HTMXhx-trigger="revealed once"무한 스크롤 - edge cache
- Cloudflare KV (overview/notes/tags/activity, TTL 60s, mutation invalidation)
- 에러 알림
- htmx:responseError → toast (우하단 슬라이드)
보안 헤더
- CSP
default-src 'self'+ CDN 한정 허용- X-Frame
frame-ancestors 'none'(클릭재킹 방지)- nosniff
- MIME sniffing 차단
- 입력 검증
- 길이 제한 + chars().count() 한글 정확 측정
- XSS
- maud 자동 escape
- SQL injection
- prepared statement (D1 binding)
- SRI
- unpkg CDN 자산에 sha384 integrity