Conference deadlines, quietly tracked.
PaperDue 是一个面向科研作者的 iOS 截稿追踪工具。它把 AI、系统、数据库、软件工程、安全等方向的会议截稿时间、投稿节点、会议日程、关注列表和本地提醒放在一个轻量 SwiftUI 应用里,帮助作者快速判断下一件需要处理的投稿事项。
- 会议索引:按简称、全称、CCF 等级、研究方向和截稿状态检索会议。
- 近期截止:按 30 天、60 天、90 天等窗口查看即将到来的关键节点。
- 关注列表:将当前研究计划相关的会议加入个人关注列表。
- 本地提醒:支持 30 天前、7 天前、3 天前、1 天前和当天提醒预设。
- 数据同步:启动时优先读取本地缓存,再尝试刷新远端会议快照。
- 离线可用:内置
SeedConferences.json,远端不可用时仍可浏览基础数据。 - 变更提示:远端快照更新后,对延期或已更新会议进行标记。
- 本地账号:提供轻量本地注册、登录和会话恢复,用于演示个人化工作流。
- Swift 5
- SwiftUI
- Combine
- UserNotifications
- CryptoKit
- XCTest / XCUITest
- iOS 17+
- Xcode 26+
PaperDue/
├── PaperDue/
│ ├── App/ # 应用入口、Tab 导航和全局 AppModel
│ ├── Data/ # 会议快照、缓存、偏好、本地账号与提醒调度
│ ├── DesignSystem/ # 颜色、排版、组件样式常量
│ ├── Domain/ # 会议、节点、筛选、提醒等领域模型
│ ├── Features/ # 会议列表、详情、近期截止、关注、账号页面
│ ├── Resources/ # 内置会议种子数据与资源
│ └── Support/ # 日期与格式化工具
├── PaperDueTests/ # 单元测试
├── PaperDueUITests/ # UI 测试
└── PaperDue.xcodeproj/ # Xcode 工程
- macOS,已安装 Xcode 26 或更新版本
- iOS 17 或更新版本的模拟器/真机
- Swift 5 工具链,随 Xcode 提供
- 克隆仓库:
git clone <your-repo-url>
cd PaperDue- 使用 Xcode 打开工程:
open PaperDue.xcodeproj-
在 Xcode 中选择
PaperDuescheme 和一个 iOS 模拟器。 -
点击 Run,或使用快捷键
Command + R。
先查看可用 scheme:
xcodebuild -list -project PaperDue.xcodeproj然后构建:
xcodebuild \
-project PaperDue.xcodeproj \
-scheme PaperDue \
-destination 'platform=iOS Simulator,name=iPhone 17' \
build如果你的本机没有名为 iPhone 17 的模拟器,请先用下面的命令查看可用设备,并替换 -destination:
xcrun simctl list devices available运行单元测试和 UI 测试:
xcodebuild \
-project PaperDue.xcodeproj \
-scheme PaperDue \
-destination 'platform=iOS Simulator,name=iPhone 17' \
testUI 测试会使用 -UITestUseBundledData 启动参数,避免依赖远端网络数据。
应用启动时的数据加载顺序如下:
- 恢复本地偏好和提醒设置。
- 读取本地缓存快照。
- 缓存为空时读取内置
PaperDue/Resources/SeedConferences.json。 - 尝试从远端快照刷新数据。
- 刷新成功后写入缓存;刷新失败时保留现有数据并记录错误信息。
默认远端快照地址定义在 PaperDue/App/PaperDueApp.swift:
https://zkforge.github.io/ai-deadlines-json/conference-snapshot.json
快照格式由 ConferenceSnapshotDTO、ConferenceDTO 和 ConferenceMilestoneDTO 定义。日期字段使用 ISO 8601 字符串,会议节点允许 rawDateString 为 null,用于表示待官方确认的时间。
PaperDue 的界面以科研作者的日常检查流程为核心:
- 首页优先展示可搜索、可筛选的会议列表。
- 会议详情页集中展示投稿节点、会议时间、来源和提醒设置。
- 近期截止页按时间窗口聚合下一批关键节点。
- 关注页只保留用户主动标记的会议,降低信息噪声。
- 视觉风格保持克制,避免把截止时间管理做成高干扰提醒流。
更详细的视觉规范见 DESIGN.md。
欢迎提交会议数据修正、界面改进、测试补充和功能建议。建议流程:
- Fork 本仓库。
- 创建功能分支:
git checkout -b feature/your-change- 修改代码或数据,并确保相关测试通过。
- 提交 Pull Request,说明改动动机、验证方式和可能影响。
提交数据更新时,请尽量提供官方 CFP、会议官网或可信公开来源。会议 deadline 对作者决策有直接影响,未经来源校验的数据不建议合并。
- 新增公共逻辑时补充单元测试。
- UI 流程变化时补充或更新 XCUITest。
- 会议时间统一保存为可解析的 ISO 8601 字符串。
- 涉及截止时间时保留原始时区说明,例如 AoE、会议本地时区或官网标注。
- 本地账号功能用于演示个人化体验,不应视为生产级身份系统。
- 增加更完整的会议数据维护流程。
- 支持用户自定义会议和自定义节点。
- 增加数据源健康检查与同步历史。
- 将账号体系从本地演示迁移到可选的真实后端服务。
本项目基于 MIT License 开源,详见 LICENSE。