一个轻量、可自托管、面向手机阅读体验的 TXT 小说 Web 阅读器。
LoveReader 适合个人或小范围自用:PC 上传 TXT,手机端像 Kindle/微信读书一样分页阅读。项目使用单机架构,SQLite 保存数据,原始 TXT 存本地目录,阅读端按章节懒加载,避免一次性把整本书塞进浏览器。
- PC 端拖拽上传 TXT 小说。
- 自动识别 UTF-8、GBK、GB18030、UTF-16 编码。
- 自动章节识别,支持常见中文网文章节格式。
- 大 TXT 优化:章节拆分、segment 存储、章节懒加载。
- 移动端沉浸式阅读,支持点击/左右滑动翻页。
- 目录抽屉、书签、阅读设置、原文搜索。
- 全书搜索,点击结果可跳转到对应章节和页面,并高亮关键词。
- 字号、行高、边距、主题、亮度等阅读设置。
- localStorage + 服务端双进度保存,刷新后自动恢复。
- IndexedDB 缓存章节、分页和离线队列。
- PWA 支持,可添加到手机主屏幕。
- JWT HttpOnly Cookie 登录。
- 多账号管理,不开放公开注册。
- 书籍可设置公开或仅自己可见。
- Docker 单容器部署,可选 Redis 加速。
- Next.js 15 App Router
- TypeScript
- Tailwind CSS
- shadcn/ui 风格的本地 UI 组件
- Prisma ORM
- SQLite
- JWT HttpOnly Cookie
- Zustand
- IndexedDB
pnpm install
cp .env.example .env
pnpm db:generate
pnpm db:migrate
pnpm dev首次登录时会根据 .env 创建管理员账号:
ADMIN_USERNAME="reader"
ADMIN_PASSWORD="change-me"如果部署到公网或局域网,请务必修改默认密码和 JWT_SECRET。
cp .env.production.example .env.production
docker compose up -d --build默认端口映射:
宿主机 3100 -> 容器 3000
./data -> /app/data
生产部署说明见 docs/deployment.md。
pnpm lint
pnpm test
pnpm build
pnpm test:e2esrc/app Next.js App Router 页面和 API Routes
src/features/auth 登录与账号管理
src/features/books 书架与 TXT 上传
src/features/reader 阅读器、分页、手势、搜索、缓存、进度
src/lib/auth JWT、密码哈希、会话工具
src/lib/books 书籍权限与数据服务
src/lib/txt 编码识别、TXT 分章、文本切分
src/lib/offline IndexedDB 与离线同步
prisma SQLite schema、migration、seed
deploy 部署模板
tests 单元测试与 E2E 测试
- 面向单机自托管,不引入复杂后台、微服务或消息队列。
- SQLite 是唯一真源;Redis 只是可选缓存加速。
- 阅读端不渲染整本书,只保留当前页附近的必要内容。
- 上传书籍、SQLite 数据库、生产
.env都不应该提交到仓库。
MIT