页间是一款面向个人阅读场景的 iOS 阅读 App。它关注纸质书和电子书之间的衔接:用户可以导入自己的 TXT / EPUB 文件阅读,也可以用纸书页面照片辅助定位电子书位置,并把阅读时的想法沉淀为卡片。
当前项目仍处于早期 TestFlight 阶段,功能和交互还在持续打磨。
- TXT / EPUB 本地导入
- EPUB 封面解析和书架展示
- 分页阅读和滚动阅读
- 目录跳转和阅读进度恢复
- 原生文本选择
- 选中文字后进入 AI 聊天
- AI 对话保存为读书卡片
- 卡片详情、删除和回到原文
- 纸书拍照 / 相册 OCR 定位
- 电子书章节到纸质书页码范围映射
- 跟随 iOS 系统浅色 / 深色模式
- React Native 0.85
- React 19
- TypeScript
- iOS 原生 TextKit / Vision
- SQLite:
@op-engineering/op-sqlite - EPUB 解析:
jszip+fast-xml-parser - AI: App -> 后端代理 -> DeepSeek
src/
components/
screens/
services/
storage/
theme/
types/
ios/
BookFlow/
serverless/
deepseek-proxy/
docs/先安装依赖:
npm install安装 iOS Pods:
bundle install
cd ios
bundle exec pod install
cd ..复制环境变量:
cp .env.example .env启动 Metro:
npm start运行 iOS:
npm run ios运行真机时可以指定设备:
npx react-native run-ios --device "你的 iPhone 名称"客户端不直接保存 DeepSeek API Key。App 只读取:
AI_PROXY_BASE_URL=
AI_PROXY_CLIENT_TOKEN=AI_PROXY_BASE_URL 指向你自己的后端代理。DeepSeek Key 应该只放在服务端环境变量里。
仓库提供了一个最小代理示例:
serverless/deepseek-proxy代理环境变量:
DEEPSEEK_API_KEY=你的 DeepSeek API Key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-chat
AI_PROXY_CLIENT_TOKEN=可选内测 tokenAI_PROXY_CLIENT_TOKEN 只能作为内测期间的基础防误用措施,不应当成真正机密。
npm test -- --runInBand
npm run lint
npx tsc --noEmitTestFlight 前的手动回归清单见:
docs/TESTFLIGHT_REGRESSION_CHECKLIST.mddocs/PRD.mddocs/TECH_SPEC.mddocs/DEVELOPMENT_PLAN.mddocs/APP_STORE_RELEASE_PLAN.mddocs/PRIVACY_POLICY_DRAFT.mddocs/TESTFLIGHT_REGRESSION_CHECKLIST.md
.env不应提交。- 本地测试书籍、截图和临时文件放在
temp/,不会提交。 - DeepSeek API Key 不应进入客户端或 Git 历史。
- App Store / TestFlight 发布需要自己的 Apple Developer Team 和签名配置。
当前已进入 TestFlight 测试准备阶段。正式上架前仍需要继续做稳定性回归、隐私政策发布、App Store 元数据和截图准备。