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

在仓库根目录执行上述命令即可同时启动代理与前端。若在 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 发布。