H-eries = 홍도산 + (s)eries. 단일 작가(홍도산)가 운영하는 오리지널 웹 시리즈 컬렉션.
최소 의존 — 런타임은 React 19 + React Router 7 + Vite 7 + TypeScript strict. dev 도구 (Storybook 9, ESLint 9 flat config,
babel-plugin-react-compiler, Tailwind v4 + @tailwindcss/vite) 는 devDependencies — dist 산출물에 0~수 KB 영향. 외부 UI/상태
라이브러리 미사용. 코드만 있으면 어디서든 실행 가능 한 이식성을 우선한다. GitHub Pages 로 발행 (BrowserRouter, .nojekyll).
본 저장소의 모든 소설 본문·등장인물·세계관·시각 자산은 작가*(홍도산)* 의 100% 오리지널 창작 이다.
© 2026 홍도산. All rights reserved.
- 모든 저작권은 홍도산 에게 단독 귀속. 복제·배포·전송·번역·각색·기계학습 모델 학습 데이터 사용 모두 사전 서면 허가 필수.
- 코드·구조도 동일하게 All Rights Reserved — 코드·구조 (TypeScript·CSS·AI 에이전트 정의·빌드 스크립트·운영 문서) 와 서사
콘텐츠 (
content/) 모두 홍도산 단독 귀속. 오픈소스 라이선스 아님. 상세:LICENSE. - 라이선스·권리 문의:
contact_hongdosan@naver.com또는 GitHub Issue. - 자세한 정책: NOTICE.
모든 .md 산출물 첫 줄(또는 frontmatter 직후)에 다음 1줄 HTML 주석을 부착한다:
<!-- © 2026 홍도산. All rights reserved. Original creator work. --># 작가 (서브모듈 권한 있음)
git clone --recursive https://github.com/hongdosan/heries.git
cd heries
./scripts/init-private.sh # .claude/handoff·workflow/plan·prompt/custom 심링크 생성
npm install
npm run dev # 개발 서버 (http://localhost:8000)
# 외부 기여자 (서브모듈 권한 없음)
git clone https://github.com/hongdosan/heries.git
cd heries
./scripts/init-private.sh # 안내만 출력, Mock 모드 진입
npm install
npm run dev # handoff·plan·prompt 미반영 상태로 빌드 가능기타 명령:
npm run build # 프로덕션 빌드 (dist/) — GitHub Pages 배포용
npm run typecheck # 타입 체크
npm run storybook # Storybook dev 서버 (port 6006)
npm run build-storybook # Storybook 정적 빌드 (storybook-static/, 미배포)
npm run optimize:images # 이미지 자동 압축 (500 KB 이하).env.local (gitignored) 또는 GitHub Secret 으로 VITE_AUTHOR_KEY=<임의문자열> 주입 시 /unlock 페이지에서 작가 모드
진입 가능.
3 branch + tag (SemVer):
develop= 활발 개발 (작가 직접 commit)release= release candidate (검수)main= 배포 대상 (release → main merge +vX.Y.Ztag → GitHub Pages auto-deploy)
자세한 운영 규약 = .claude/harness/git-strategy.md. 변경 누적 =
CHANGELOG.md.
작가 운영 내부 자료 (세션 핸드오프·작업 계획·커스텀 프롬프트) 는 별도 프라이빗 저장소
martial-arts-config 의 heries/ 폴더에 분리 보관,
서브모듈로 연결한다. 본 repo 의 .claude/handoff/, .claude/workflow/plan/, .claude/workflow/prompt/custom/
는 심링크 (gitignored). 자세한 절차 =
.claude/harness/private-config.md.
main 브랜치 push (또는 vX.Y.Z tag push) 시
.github/workflows/deploy.yml 가 자동으로 GitHub Pages 에 단일 빌드를 배포한다 (
https://hongdosan.github.io/heries/). 워크플로우는 GitHub Secret VITE_AUTHOR_KEY 를 빌드 env 로 주입한다.
정책 #9 v2 (2026-05-14) — 단일 라이브 빌드. 작가 콘텐츠는 dist 산출물에 평문 포함되며, 기본 화면에서는 runtime 마스킹 (
shared/lib/spoiler.ts + useAuthorMode hook) 으로 가려진다. 작가 모드 진입은
/unlock 페이지에서 VITE_AUTHOR_KEY 검증 통과 시 sessionStorage
heries:author=1 플래그 set. 탭을 닫으면 자동 잠금.
마스킹 대상 (비-작가 모드에서 가림):
_series.md의## 시놉시스절- 캐릭터 카드의
## H-eries 분기 ~이하 모든 절 - frontmatter
heries_arc필드 worldbuilding/,timeline/,glossary/디렉토리- 등장인물 상세 페이지 (주인공 제외) — 라우트 가드로 잠금 안내
보안 책임 분리 — 작가는 기본 마스킹과 환경변수 격리를 보장한다. reader 가 devtools / git clone 등으로 능동적으로 우회해 스포일러를 읽는 경우는
reader 오로지 독자 본인의 책임 (스포에 대한 책임지지 않음.). 단 개인정보·API 키·시크릿·작가 키는 절대 코드에 hardcode 금지 (CLAUDE.md
#13). 빌드 시 scripts/check-secrets.mjs 가 dist 시크릿 패턴 누수를 검증.
정책 SSOT: .claude/CLAUDE.md §원칙 #9 / #13.
| 슬러그 | 상태 |
|---|---|
clash-of-multiverses |
연재 중 |
신규 작품 추가 시
content/series/{slug}/트리 +content/series.jsonseries[]+manifest.json생성.
heries/
├── README.md, LICENSE, NOTICE.md, .nojekyll
├── package.json, tsconfig.json, vite.config.ts, index.html
├── content/ # 마크다운 SSOT
│ ├── _shared/ # 공통 자산
│ │ └── images/ # 이미지 (heries-mark / placeholder / mini-game sprite)
│ ├── series.json # 시리즈 인덱스
│ └── series/{slug}/
│ ├── manifest.json
│ ├── _series.md
│ ├── characters/{1-protagonist,2-major-supporting,3-antagonist,4-minor}/
│ ├── thumbnails/ # 작품/챕터 이미지 + PROMPT.md
│ ├── worldbuilding/, timeline/, glossary/ # 작가 전용 (마스킹)
│ └── chapters/
├── scripts/ # 빌드/운영 보조 (Node 표준, 의존성 0)
│ ├── check-images.mjs # 이미지 사이즈 게이트 (500 KB)
│ ├── check-secrets.mjs # 시크릿 패턴 누수 게이트 (CLAUDE.md #13)
│ ├── copy-content.mjs # content/ → dist/ 복사 (runtime 마스킹)
│ └── optimize-images.mjs # WebP 압축
├── src/ # FSD 6 레이어 — React 19 + TypeScript
│ ├── README.md # FSD 가이드
│ ├── app/main.tsx # createRoot + BrowserRouter
│ ├── pages/, widgets/, features/, entities/, shared/
├── .storybook/ # Storybook 9 설정
├── .github/workflows/deploy.yml # main 트리거 GitHub Pages 자동 배포
└── .claude/ # 하네스 운영 + 에이전트 정의
---
slug: character-id
name: 캐릭터 표시명
origin: original
role: protagonist | antagonist | supporting | cameo
first_appearance: tba
aliases: [별칭1, 별칭2]
heries_arc: tba # 본 작품 소환 시점·상태 (reader 마스킹)
summary: 한 줄 요약
---
<!-- © 2026 홍도산. All rights reserved. Original creator work. -->
# (캐릭터명)
## 핵심 정체성
## 능력
## 외형
## 인간관계
## 출신 배경
## H-eries 분기 — (작품명) 변형 ← reader 빌드에서 마스킹- 모든 캐릭터는
origin: original. - 공개 절 (
핵심 정체성/능력/외형/인간관계/출신 배경) = reader 노출. - 작가 분기 절 (
## H-eries 분기 ~) = reader 마스킹.
src/ 는 Feature-Sliced Design (FSD) 6 레이어. React 19 + React Router 7 (BrowserRouter) + Vite 6.
- FSD 가이드:
src/README.md - CSS 슬라이스 분산 — shared/styles (tokens/base/typography/layout/utilities/author-mode/responsive) + 각
위젯·페이지·feature 슬라이스 옆
{name}.css - 공통 UI 컴포넌트 (
shared/ui/) 추가 시{name}.stories.tsx강제 (Storybook)
본 프로젝트는 revfactory/harness 위에서 문서 기반 프로세스 하네스 를 도입한다.
운영 문서 진입점: .claude/harness/harness.md
| 에이전트 | 역할 |
|---|---|
heries-lorekeeper |
캐릭터 카드 SSOT 관리·검증 |
heries-worldsmith |
세계관·연표·용어 SSOT |
heries-author |
챕터 집필 |
heries-continuity-reviewer |
신규 챕터 정합성 감사 |
heries-frontend-engineer |
src/ + 빌드 설정 |
heries-publisher |
발행·배포 |
라우터 = heries-orchestrator 스킬.
홍도산 (단독 작가). 외부 협업·다인 작가 분기는 가정하지 않는다.