MD/MDX 원고와 표지를 넣어 한 권의 책으로 읽는 웹사이트 템플릿
one-page — Next.js 文档模板
作者 fliklab
하나의 웹사이트를 한 권의 책으로 만드는 오픈소스 템플릿. MD/MDX 원고와 표지를 넣고 종이책 스타일로 읽으며, 브라우저에서 편집하고 Git patch로 저장소에 반영할 수 있다.
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
全部页面与视图 2
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
한 페이지 / 양쪽 페이지 / 겉장 펼침 보기와 판형·서체·크기·줄간격·여백·테마 설정
Fumadocs 문서 화면에서 책 기본 정보·겉장·원고를 편집하고 diff 패널에서 변경 확인
노트·참고 링크·인용을 목록·검색·SVG 관계 그래프로 탐색하는 /sources/ 화면
content/book.json 한 파일을 대상으로 Git 호환 .patch를 생성해 수동 적용
별도 API 키나 데이터베이스 없이 실행되며 책과 재료는 브라우저 localStorage에 저장
模板详细介绍
fliklab/one-page는 하나의 웹사이트를 한 권의 책처럼 읽고 편집하도록 만든 오픈소스 템플릿이다. content/book.json에 책 제목·저자·원고·스타일·재료를 담고, MD 또는 MDX 형식의 원고를 책 화면에서 읽는다. /book/ 경로에서는 책 읽기와 Edit 문서 편집을, /sources/ 경로에서는 노트·참고 링크·인용의 목록과 검색, 관계 그래프를 제공한다. Edit에서 책 정보·겉장·원고를 수정하고 적용하면 현재 브라우저의 책에 반영되며 diff 패널이 열린다. 이 diff는 복사하거나 .patch 파일로 저장해 Git 저장소에 수동 적용할 수 있다. patch 대상은 content/book.json 한 파일이며, 현재 사이트 빌드에 포함된 원본을 기준으로 누적 생성된다. GitHub 저장소에 patch를 직접 적용하는 기능은 아직 구현되지 않았고, 복사·파일 저장과 수동 적용만 지원한다. 책과 재료는 브라우저 localStorage에 저장되며 서버 동기화는 없다. 방문자가 수정한 책이 자동으로 다른 독자에게 공개되지 않으므로, 공유할 책을 바꾸려면 변경을 저장소에 반영하고 다시 빌드·배포해야 한다. 별도 API 키나 데이터베이스 없이 실행된다. 종이책 스타일 설정은 기본값 국판 A5·나눔명조·11pt·줄간격 175%·여백 18mm에서 시작하며, 우측 하단 설정 패널의 종이책 추천 설정으로 에세이·수필, 소설·인문, 작은 에세이·시집, 실용서·교재, 큰 글씨 중 하나를 선택할 수 있다. 판형·여백은 mm, 본문 글자 크기는 pt로 조정하고 Noto Serif KR, Noto Sans KR도 선택할 수 있다. 화면은 종이 전체가 보이도록 축소되며 인쇄용 PDF를 생성하는 기능은 아니다. MDX에서는 Chapter, Section, Callout, Figure 컴포넌트를 import 없이 사용할 수 있고, 업로드한 MDX는 콘텐츠로 파싱하며 JavaScript 표현식·임의 HTML·외부 import를 실행하지 않는다. 기술 스택은 Next.js, React, Fumadocs, unified/remark, jsdiff이며 그래프는 SVG 기반이다. 서체는 외부 CDN에서 로드하고, 오프라인 사용이 필요하면 직접 호스팅하도록 바꿀 수 있다. 코드와 샘플 콘텐츠는 MIT License로 배포된다.
适合你的项目吗?
适用场景
- MD/MDX로 에세이, 학습 자료, 연구 노트, 개인 매뉴얼을 책 형태로 구성할 때
- 앞·뒷표지, 날개, 출간정보, 책등을 갖춘 한 권의 책 화면을 만들 때
- 판형·서체·크기·줄간격·여백·테마를 바꿔 다양한 독서 화면을 시험할 때
- 노트·참고 링크·직접 인용을 연결 그래프로 탐색하는 자료 화면이 필요할 때
- 브라우저에서 편집한 변경을 .patch로 저장해 Git 저장소에 반영할 때
适合人群
- 하나의 책을 웹사이트로 읽히게 만들려는 개인 저자나 편집자
- Markdown/MDX 원고와 Git 저장소를 함께 관리하는 사용자
- 종이책 스타일의 판형·서체·여백 설정을 웹에서 조정하려는 사용자
- 노트·링크·인용을 목록과 관계 그래프로 탐색하려는 사용자
- Next.js 기반 정적 사이트로 책을 배포하려는 개발자
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
GitHub에서 Use this template → Create a new repository로 저장소를 만들고, Node.js 22 이상에서 npm ci와 npm run dev로 실행한다.
- 2
content/book.json의 책 제목·저자·원고·스타일·재료를 자신의 주제로 바꾸며, 웹의 Edit에서도 수정할 수 있다.
- 3
Edit에서 적용하기 → .patch 파일 저장 후, 이 사이트를 빌드한 버전의 저장소에서 git apply --check와 git apply로 적용하고 npm test, npm run build를 실행한다.
- 4
patch 대상은 content/book.json 한 파일이며, 같은 patch를 두 번 적용하거나 원본 파일이 달라지면 git apply --check가 실패할 수 있다.
- 5
빌드 결과는 out/에 생성되는 정적 사이트이며, 기본 구성은 /book/, /sources/ 같은 루트 경로를 사용해 서브디렉터리 배포에는 별도 경로 설정이 필요하다.
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明本次收录的是公开仓库中采用 MIT 许可的免费版本;免费范围为该版本代码,不代表外部服务或第三方素材免费。
使用时需要遵守
- 允许免费使用、修改、商用和分发该版本代码。
- 分发代码副本或实质性部分时,保留原作者版权声明和完整 MIT 许可声明。
- 代码按现状提供;担保与责任限制以原许可证及适用法律为准。
额外费用与待核对事项
- 演示图片、字体、图标及其他第三方素材需按各自许可核对,不能仅凭代码的 MIT 许可判断。
- 域名、托管、数据库、支付或 AI 等外部服务可能另外收费。
- Node.js 22 이상이 필요합니다.
- 별도 API 키나 데이터베이스 없이 실행됩니다.
- 화면은 종이 전체가 보이도록 축소되며 인쇄용 PDF를 생성하는 기능은 아닙니다.
- 방문자가 수정한 책이 자동으로 다른 독자에게 공개되지 않으며, 공유하려면 변경을 저장소에 반영하고 다시 빌드·배포해야 합니다.
- patch 대상은 content/book.json 한 파일이며, 같은 patch를 두 번 적용하거나 원본 파일이 달라지면 git apply --check가 실패할 수 있습니다.
- GitHub 저장소에 patch를 직접 적용하는 기능은 아직 구현하지 않았고, 복사·파일 저장과 수동 적용만 지원합니다.
- 업로드한 MDX는 콘텐츠로 파싱하며 JavaScript 표현식, 임의 HTML, 외부 import를 실행하지 않습니다. 컴포넌트 속성은 문자열로 작성해야 합니다.
- 책과 재료는 현재 브라우저의 localStorage에 저장되며 서버 동기화는 없습니다.
- 겉장 이미지는 개별 2MB, MD/MDX 원고는 4MB, 책 JSON은 32MB까지 불러올 수 있습니다.
- 업로드한 표지 이미지는 data URL로 JSON과 patch에 포함되므로, 공개 저장소에 반영할 때는 공개할 수 있는 이미지·원고를 사용해야 합니다.
- 새 버전을 배포해도 같은 브라우저의 기존 편집본이 우선 표시됩니다.
- 기본 구성은 /book/, /sources/ 같은 루트 경로를 사용하며 서브디렉터리 배포는 별도 경로 설정이 필요합니다.
- 서체는 외부 CDN에서 로드하며 오프라인 사용이 필요하면 직접 호스팅하도록 바꿔야 합니다.
- 사용한 라이브러리와 서체에는 각각의 라이선스가 적용됩니다.
- KoPub World 바탕·돋움은 기기에 설치된 서체를 사용하는 옵션이며, 폰트 파일을 재배포하지 않고 미설치 시 대체 서체와 상태 안내를 표시합니다.
查看原文依据
Permission is hereby granted, free of charge
许可证原文
2. 생성한 저장소를 내려받고 Node.js 22 이상에서 실행합니다.
README 原文
별도 API 키나 데이터베이스 없이 실행됩니다.
README 原文
판형과 여백은 mm, 본문 글자 크기는 pt로 조정합니다. 본명조 계열 Noto Serif KR, 본고딕 계열 Noto Sans KR도 선택할 수 있습니다. [조사 근거, 설정표와 인쇄 시 유의점](docs/print-typography.md)을 참고하세요. 화면은 종이 전체가 보이도록 축소되며 인쇄용 PDF를 생성하는 기능은 아닙니다.
README 原文
화면에서 수정한 내용은 브라우저에 저장됩니다. 방문자가 수정한 책이 자동으로 다른 독자에게 공개되지는 않습니다. 공유할 책을 바꾸려면 변경을 저장소에 반영하고 다시 빌드·배포하세요.
README 原文
patch의 대상은 **`content/book.json` 한 파일**입니다. 원고, 책 정보, 겉장 이미지, 설정, 재료를 함께 담습니다. diff는 마지막 버튼 클릭 시점이 아니라 **현재 사이트 빌드에 포함된 원본**을 기준으로 누적 생성됩니다. 같은 patch를 두 번 적용하거나 원본 파일이 달라지면 `git apply --check`가 실패할 수 있습니다. 이 경우 변경을 검토하고 최신 원본에서 다시 편집하세요.
README 原文
GitHub 저장소에 patch를 직접 적용하는 기능은 아직 구현하지 않았습니다. 현재는 복사·파일 저장과 수동 적용을 지원합니다. [개발 계획](docs/ROADMAP.md)을 참고하세요.
README 原文
이미지는 `public/` 파일의 루트 경로나 접근 가능한 웹 URL을 사용합니다. 업로드한 MDX는 콘텐츠로 파싱하며 JavaScript 표현식, 임의 HTML, 외부 import를 실행하지 않습니다. 컴포넌트 속성은 문자열로 작성합니다.
README 原文
- 책과 재료는 현재 브라우저의 localStorage에 저장됩니다. 서버 동기화는 없습니다.
README 原文
- 겉장 이미지는 개별 2MB, MD/MDX 원고는 4MB, 책 JSON은 32MB까지 불러올 수 있습니다.
README 原文
- 업로드한 표지 이미지는 data URL로 JSON과 patch에 포함됩니다. 공개 저장소에 반영할 때는 공개할 수 있는 이미지·원고를 사용하세요.
README 原文
- 새 버전을 배포해도 같은 브라우저의 기존 편집본이 우선 표시됩니다. 새 `content/book.json`을 불러오거나 새 브라우저 프로필에서 배포 원본을 확인할 수 있습니다.
README 原文
빌드 결과는 `out/`에 생성되는 정적 사이트입니다. Next.js를 지원하는 호스팅 또는 정적 호스팅의 도메인 루트에 배포할 수 있습니다. 기본 구성은 `/book/`, `/sources/` 같은 루트 경로를 사용하며 서브디렉터리 배포는 별도 경로 설정이 필요합니다.
README 原文
Next.js, React, Fumadocs, unified/remark, jsdiff로 만들었습니다. 그래프는 SVG 기반이며 별도 그래프 서비스가 필요하지 않습니다. 서체는 외부 CDN에서 로드하며 오프라인 사용이 필요하면 직접 호스팅하도록 바꿀 수 있습니다.
README 原文
코드와 샘플 콘텐츠는 [MIT License](LICENSE)로 배포합니다. 사용한 라이브러리와 서체에는 각각의 라이선스가 적용됩니다. 기여는 [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요.
README 原文
https://github.com/fliklab/one-page/blob/main/LICENSEhttps://github.com/fliklab/one-page/blob/main/README.mdKoPub World 바탕·돋움은 기기에 설치된 서체를 사용하는 옵션입니다. 폰트 파일을 재배포하지 않으며, 미설치 시 대체 서체와 상태 안내를 표시합니다. [사용 조건과 설치 안내](docs/kopub.md)를 참고하세요.
README 原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-10-14。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较完整 · 80 / 100
- 技术栈
- Next.js · React
- 网站类型
- 文档
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2026-09-05
- 截图检查日期
- 2026-10-14
已收录演示链接。请用你的内容与屏幕尺寸检查;有演示不代表表单、认证或支付已经可用。
目录记录的主要技术栈是 Next.js。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
审核声明: codex-user-requested-batch-review-20261017 · 2026-10-16
查看当时使用的来源资料
SHA-256: 942b1881568bfb889efd3da05f64428ed62bc3c34e0d990d79c3d9d813623f07
2026-10-14T23:53:04.654Z
来源文件 / 仓库# 한 페이지 · One Page **하나의 웹사이트가 한 권의 책이 되는 오픈소스 템플릿.** 👉 [DEMO](https://one-page-book-studio.jsh852.chatgpt.site/) 표지와 Markdown/MDX 원고를 넣고, 읽는 방식까지 직접 디자인하세요. 한 페이지 또는 양쪽 페이지로 읽고, Fumadocs 문서 화면에서 편집하고, 원고의 재료를 연결 그래프로 탐색합니다. ## 내 책으로 시작하기 1. GitHub의 **Use this template → Create a new repository**를 누릅니다. 2. 생성한 저장소를 내려받고 Node.js 22 이상에서 실행합니다. ```sh npm ci npm run dev ``` 3. [로컬 책 화면](http://localhost:3000)을 엽니다. 4. `content/book.json`의 책 제목, 저자, 원고, 스타일, 재료를 자신의 주제로 바꿉니다. 웹의 **Edit**에서도 수정할 수 있습니다. 별도 API 키나 데이터베이스 없이 실행됩니다. ## 무엇을 만들 수 있나요? - MD/MDX로 쓰는 에세이, 학습 자료, 연구 노트, 개인 매뉴얼 - 앞·뒷표지, 날개, 출간정보, 책등을 갖춘 한 권의 책 - 판형·서체·크기·줄간격·여백·테마를 바꾸는 독서 화면 - 한 페이지 / 양쪽 페이지 / 겉장 펼침 - 목록과 연결 그래프로 탐색하는 노트, 참고 링크, 직접 인용 - Git 저장소에 적용할 수 있는 변경사항 `.patch` ## 화면 | 경로 | 역할 | | --- | --- | | `/`, `/book/` | 책 읽기와 Edit 문서 편집 | | `/sources/` | 노트·참고 링크·인용의 목록, 검색, 관계 그래프 | `Edit`에서는 책 기본 정보, 겉장, 원고를 수정합니다. 상단 **적용하기**를 누르면 원고가 현재 브라우저의 책에 반영되고 diff 패널이 열립니다. 패널의 **diff 복사하기** 또는 **.patch 파일 저장**으로 변경을 가져갈 수 있습니다. ## 종이책 스타일 설정 기본값은 **국판 A5 · 나눔명조 · 11pt · 줄간격 175% · 여백 18mm**입니다. 우측 하단 설정 패널의 **종이책 추천 설정**에서 에세이·수필, 소설·인문, 작은 에세이·시집, 실용서·교재, 큰 글씨 중 하나를 선택하면 판형·서체·크기·행간·여백이 함께 적용됩니다. 판형과 여백은 mm, 본문 글자 크기는 pt로 조정합니다. 본명조 계열 Noto Serif KR, 본고딕 계열 Noto Sans KR도 선택할 수 있습니다. [조사 근거, 설정표와 인쇄 시 유의점](docs/print-typography.md)을 참고하세요. 화면은 종이 전체가 보이도록 축소되며 인쇄용 PDF를 생성하는 기능은 아닙니다. ## 편집한 책을 저장소에 반영하기 Edit에서 **원문 편집**을 누르면 본문을 직접 클릭해 수정할 수 있습니다. 제목, 문단, 인용문, 박스 제목과 본문, 이미지 캡션이 각각 편집 영역이 됩니다. 별도의 원문 텍스트박스는 열리지 않습니다. **편집 마치기**로 문서 모습을 확인하고, **적용하기**로 책에 반영한 뒤 diff를 복사하거나 저장하세요. 기존 Markdown/MDX 구조와 이미지 주소는 유지됩니다. 화면에서 수정한 내용은 브라우저에 저장됩니다. 방문자가 수정한 책이 자동으로 다른 독자에게 공개되지는 않습니다. 공유할 책을 바꾸려면 변경을 저장소에 반영하고 다시 빌드·배포하세요. 1. Edit에서 **적용하기 → .patch 파일 저장**을 누릅니다. 2. 이 사이트를 빌드한 버전의 저장소에서 실행합니다. ```sh git apply --check /path/to/book-changes.patch git apply /path/to/book-changes.patch npm test npm run build git add content/book.json git commit -m "Update my book" ``` patch의 대상은 **`content/book.json` 한 파일**입니다. 원고, 책 정보, 겉장 이미지, 설정, 재료를 함께 담습니다. diff는 마지막 버튼 클릭 시점이 아니라 **현재 사이트 빌드에 포함된 원본**을 기준으로 누적 생성됩니다. 같은 patch를 두 번 적용하거나 원본 파일이 달라지면 `git apply --check`가 실패할 수 있습니다. 이 경우 변경을 검토하고 최신 원본에서 다시 편집하세요. GitHub 저장소에 patch를 직접 적용하는 기능은 아직 구현하지 않았습니다. 현재는 복사·파일 저장과 수동 적용을 지원합니다. [개발 계획](docs/ROADMAP.md)을 참고하세요. ## 책 파일 구조 ```text content/book.json # 배포할 책의 단일 원본 app/book/studio.tsx # 읽기 / Edit / 스타일·페이지 패널 app/book/content.tsx # MD/MDX 파서와 콘텐츠 컴포넌트 app/book/structure.ts # 책 구성과 양쪽 페이지 계산 app/book/parts.tsx # 표지·날개·출간정보·책등 app/book/patch.ts # 원본과 비교한 unified diff 생성 app/book/diff-panel.tsx # diff 확인·복사·파일 저장 app/sources/ # 재료 목록과 인터랙티브 그래프 public/ # 책에서 참조할 이미지 ``` `content/book.json`의 주요 키: - `version`: 현재 `1` - `book`: 제목·저자·출판사·원고·겉장 정보 - `settings`: 판형·폰트·줄간격·테마·보기 방식 - `sources`: 노트·링크·인용과 연결, 그래프 위치 `book.source`는 Markdown 또는 MDX 문자열이며 `book.format`을 `md` 또는 `mdx`로 설정합니다. `sources`를 빈 배열로 두면 빈 재료 목록에서 시작합니다. 샘플 책과 저자는 기능 설명을 위한 가상 예시이며, 예시 인용문은 이 샘플 원고의 문장입니다. ## MDX 컴포넌트 `#`는 챕터, `##`는 소챕터입니다. 일반 본문, 강조, 인용, 목록, 코드, 표, 링크와 이미지를 사용할 수 있습니다. MDX에서는 다음 컴포넌트를 import 없이 사용할 수 있습니다. ```mdx <Chapter>첫 번째 챕터</Chapter> <Section>작은 이야기</Section> 본문을 작성합니다. <Callout title="기억할 점"> 여기에 참고 내용을 작성합니다. </Callout> <Figure src="/my-photo.jpg" alt="사진 설명" caption="그림 1. 사진의 캡션" /> ``` 이미지는 `public/` 파일의 루트 경로나 접근 가능한 웹 URL을 사용합니다. 업로드한 MDX는 콘텐츠로 파싱하며 JavaScript 표현식, 임의 HTML, 외부 import를 실행하지 않습니다. 컴포넌트 속성은 문자열로 작성합니다. ## 저장과 이미지 - 책과 재료는 현재 브라우저의 localStorage에 저장됩니다. 서버 동기화는 없습니다. - **책 내보내기**로 전체 JSON을 보관하고, 다른 브라우저의 **불러오기**로 복원할 수 있습니다. - 겉장 이미지는 개별 2MB, MD/MDX 원고는 4MB, 책 JSON은 32MB까지 불러올 수 있습니다. - 이미지가 많아 브라우저 저장 한도를 넘으면 저장 오류가 표시됩니다. JSON을 내보내 보관하세요. - 업로드한 표지 이미지는 data URL로 JSON과 patch에 포함됩니다. 공개 저장소에 반영할 때는 공개할 수 있는 이미지·원고를 사용하세요. - 이전 책 JSON은 새 겉장 필드를 비워 둔 상태로 호환됩니다. - 새 버전을 배포해도 같은 브라우저의 기존 편집본이 우선 표시됩니다. 새 `content/book.json`을 불러오거나 새 브라우저 프로필에서 배포 원본을 확인할 수 있습니다. ## 검사와 배포 ```sh npm test npm run typecheck npm run build ``` 빌드 결과는 `out/`에 생성되는 정적 사이트입니다. Next.js를 지원하는 호스팅 또는 정적 호스팅의 도메인 루트에 배포할 수 있습니다. 기본 구성은 `/book/`, `/sources/` 같은 루트 경로를 사용하며 서브디렉터리 배포는 별도 경로 설정이 필요합니다. GitHub Actions는 push와 pull request에서 테스트와 프로덕션 빌드를 실행합니다. 별도 인증 토큰은 필요하지 않습니다. ## 기술과 라이선스 Next.js, React, Fumadocs, unified/remark, jsdiff로 만들었습니다. 그래프는 SVG 기반이며 별도 그래프 서비스가 필요하지 않습니다. 서체는 외부 CDN에서 로드하며 오프라인 사용이 필요하면 직접 호스팅하도록 바꿀 수 있습니다. 코드와 샘플 콘텐츠는 [MIT License](LICENSE)로 배포합니다. 사용한 라이브러리와 서체에는 각각의 라이선스가 적용됩니다. 기여는 [CONTRIBUTING.md](CONTRIBUTING.md)를 참고하세요. --- **English:** One Page is an MIT-licensed, single-book website template. Use this template, run `npm ci && npm run dev`, and replace `content/book.json` with your own book. It includes a paginated reader, facing-page and jacket views, a Fumadocs editor, a source graph, and downloadable Git-compatible patches. Browser edits are local; commit changes to the snapshot and redeploy to publish them. Direct GitHub patch application is planned, not implemented. KoPub World 바탕·돋움은 기기에 설치된 서체를 사용하는 옵션입니다. 폰트 파일을 재배포하지 않으며, 미설치 시 대체 서체와 상태 안내를 표시합니다. [사용 조건과 설치 안내](docs/kopub.md)를 참고하세요.
看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

nextjs-prisma-boilerplate
nemanjam/nextjs-prisma-boilerplate 是一个面向中小型全栈应用的生产级启动器,围绕 Next.js 12、React 18、Prisma 4 和 Postgres 构建。
Next.js · 文档

rubix-documents
Documents is a powerful and flexible Next.js documentation starter kit designed to simplify the process of cre…
Next.js · 文档

lil-docs-template
A lil docs template for lil projects.
Next.js · 文档

next-app-nextra-template
Template for Next.js 16 app router + Mantine 9 UI + Nextra 4
Next.js · 文档

docs-template
Fully featured documentation website, powered by Next.js, Radix Themes, and BaseHub.
Next.js · 文档

shadcn-blog
A blog template built using Next.JS 15, shadcn/ui, and fumadocs.
Next.js · 博客
