Files
gavindiazandClaude Code 0ca4fcce65 docs: 更新/重写项目文档(README / 部署手册 / 前端说明)
- README.md:补充原生分页 / 连续选取 / 摘录高亮说明;阅读位置改为
  服务端跨设备同步(不再是「当前浏览器保存」);补「第二大脑」助手
  与模型管理入口;验证命令改为 venv 内 python
- deploy/README.md:修正 git clone 后的实际目录结构;新增第 8 节
  「历史遗留数据清理」(clean_orphans 脚本 + 启动迁移自动清理),
  并在常见问题里补跨设备位置 / 删书不彻底 / 脚本 ModuleNotFound 等
- frontend/README.md:整体重写,去掉 create-next-app 模板残留
  (Vercel / Geist),改为项目真实结构 / 模块说明 / 本地开发 / 构建
- 删除 backend/AGENTS.md:Next.js 自动生成的残留块,backend 目录为
  FastAPI 项目、无 node_modules/next,删除避免误导(frontend 那份保留)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-27 22:30:22 +08:00
..

BookMate 前端(Next.js)

BookMate 的 Web 界面:书架、EPUB 阅读器、书库对话、全局「第二大脑」AI 助手、模型管理、MCP 服务配置。

技术栈

  • Next.js(App Router,React 19),Tailwind CSS v4
  • epubjs 0.3(阅读器:原生分页 + 必要时的 scrolled-doc 切换)
  • lucide-react 图标;@/lib/api 统一的带鉴权 fetch 封装

主要模块

路径 作用
src/app/page.tsx 书架 + 会话主界面;顶部导航在「书库」与「AI 助手(第二大脑)」间切换
src/components/EpubReader.tsx 全屏 EPUB 阅读器:原生分页、目录、字号、摘录/高亮、跨设备阅读位置同步、连续选取开关
src/components/ChatPanel.tsx 流式对话(引用、工具调用、复制/导出)
src/components/ModelManagerDialog.tsx 网页内管理 AI 模型(OpenAI 兼容 / Anthropic)
src/components/McpManagerDialog.tsx 配置远程 MCP 服务器(Streamable HTTP / SSE)
src/lib/api.ts 后端 API 客户端(含 authHeaders())
src/lib/auth.ts SITE_PASSWORD 登录与令牌存取

本地开发

npm ci
npm run dev

打开 http://localhost:3000。后端地址默认 http://localhost:8000/api,可用环境变量覆盖:

# Windows PowerShell
$env:NEXT_PUBLIC_API_BASE="http://localhost:8000/api"
npm run dev

构建

npm run build
# 生产运行
npm run start

生产部署(Docker 镜像、NPM 反代、NEXT_PUBLIC_API_BASE)见仓库根目录 deploy/README.md。

注意

  • 本项目是书库前端,不面向 Vercel 部署;NEXT_PUBLIC_API_BASE 在构建期内联,改后端地址需重新 build。
  • 阅读器位置优先读服务端 GET /books/{id}/progress(跨设备),localStorage 仅作离线兜底。