- 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>
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 仅作离线兜底。