Files in the top-level directory from the latest check-in
- client
- server
- CHANGELOG.md
- Dockerfile
- LICENSE
- package-lock.json
- package.json
- README.md
FossilNovelReader
基于 Web 的小说阅读器:从远程 Fossil SCM 仓库拉取 .txt / .md 文本,在浏览器中阅读。前端通过本地 Express 代理访问 Fossil,避免 CORS 限制。
技术栈
- 前端:React 18、Vite、Tailwind CSS、shadcn/ui 风格组件、Zustand(persist)、React Router、
vite-plugin-pwa(PWA) - 后端:Node.js、Express(仅作 HTTP 代理)
功能概要
- 首页输入 Fossil 仓库根 URL,加载书架;自动填充上次使用的仓库;历史仓库(最多 8 条)可填入、设为默认、删除
- 使用
/json/dir?checkin=tip递归遍历;若站点未启用 JSON,则回退解析网页/dir?ci=tip - 识别
.txt、.md,提供树状目录与平铺列表,支持路径搜索 - 通过
/raw?ci=tip&name=路径获取正文;阅读器支持字号、夜间模式、阅读进度持久化(百分比、滚动位置、章节索引,滚动节流保存)、简易章节目录 - PWA:可安装到主屏幕(移动端「添加到主屏幕」);开发模式下已启用 Service Worker 便于联调
环境要求
- Node.js 18+(内置
fetch)
安装与运行
npm install
npm run dev
- 前端:http://localhost:5173
- 代理:http://localhost:3001(开发时由 Vite 将
/api转发到该端口)
在仓库根目录执行上述命令即可同时启动代理与前端。若在 client/ 目录单独执行 npm run dev,也会通过 concurrently 并行启动 ../server 与 Vite,避免出现 ECONNREFUSED(仅代理未启动)。若只需纯前端、自行另开终端跑代理,可使用 npm run dev:vite-only(在 client/ 下)。
生产构建:
npm run build
npm run preview -w fossil-novel-client
部署时需同时提供构建后的静态资源与代理服务,并为前端配置与开发环境一致的 API 代理或同源路径(PWA 与 /api 同源时才能正常缓存与代理)。
目录结构(简要)
.
├── CHANGELOG.md # 变更日志
├── README.md
├── LICENSE
├── client/ # Vite + React 前端
├── server/ # Express 代理(server.js)
└── package.json # npm workspaces 根配置
变更记录
详见 CHANGELOG.md。
文档维护约定
后续开发在有必要时应同步更新:
| 文档 | 何时更新 |
|---|---|
| CHANGELOG.md | 任何对用户可见的变更:新功能、修复、破坏性变更、移除的能力等;在 [Unreleased] 下按类别(Added / Changed / Fixed 等)记录,发版时再打上版本号与日期。 |
| README.md | 安装方式、运行命令、环境要求、功能说明、部署方式等发生变化时。 |
若某次改动仅涉及内部实现且行为与文档一致,可不改;一旦对外行为或文档描述不再一致,应至少更新其一。
许可
本项目以 MIT License 发布。