Skip to content

zkforge/PaperDue

Repository files navigation

PaperDue app icon

PaperDue

Conference deadlines, quietly tracked.

Swift 5 SwiftUI iOS 17+ Xcode 26+

Coming soon on TestFlight

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 提供

运行 iOS 应用

  1. 克隆仓库:
git clone <your-repo-url>
cd PaperDue
  1. 使用 Xcode 打开工程:
open PaperDue.xcodeproj
  1. 在 Xcode 中选择 PaperDue scheme 和一个 iOS 模拟器。

  2. 点击 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' \
  test

UI 测试会使用 -UITestUseBundledData 启动参数,避免依赖远端网络数据。

数据源

应用启动时的数据加载顺序如下:

  1. 恢复本地偏好和提醒设置。
  2. 读取本地缓存快照。
  3. 缓存为空时读取内置 PaperDue/Resources/SeedConferences.json
  4. 尝试从远端快照刷新数据。
  5. 刷新成功后写入缓存;刷新失败时保留现有数据并记录错误信息。

默认远端快照地址定义在 PaperDue/App/PaperDueApp.swift

https://zkforge.github.io/ai-deadlines-json/conference-snapshot.json

快照格式由 ConferenceSnapshotDTOConferenceDTOConferenceMilestoneDTO 定义。日期字段使用 ISO 8601 字符串,会议节点允许 rawDateStringnull,用于表示待官方确认的时间。

设计原则

PaperDue 的界面以科研作者的日常检查流程为核心:

  • 首页优先展示可搜索、可筛选的会议列表。
  • 会议详情页集中展示投稿节点、会议时间、来源和提醒设置。
  • 近期截止页按时间窗口聚合下一批关键节点。
  • 关注页只保留用户主动标记的会议,降低信息噪声。
  • 视觉风格保持克制,避免把截止时间管理做成高干扰提醒流。

更详细的视觉规范见 DESIGN.md

贡献指南

欢迎提交会议数据修正、界面改进、测试补充和功能建议。建议流程:

  1. Fork 本仓库。
  2. 创建功能分支:
git checkout -b feature/your-change
  1. 修改代码或数据,并确保相关测试通过。
  2. 提交 Pull Request,说明改动动机、验证方式和可能影响。

提交数据更新时,请尽量提供官方 CFP、会议官网或可信公开来源。会议 deadline 对作者决策有直接影响,未经来源校验的数据不建议合并。

开发约定

  • 新增公共逻辑时补充单元测试。
  • UI 流程变化时补充或更新 XCUITest。
  • 会议时间统一保存为可解析的 ISO 8601 字符串。
  • 涉及截止时间时保留原始时区说明,例如 AoE、会议本地时区或官网标注。
  • 本地账号功能用于演示个人化体验,不应视为生产级身份系统。

TODO

  • 增加更完整的会议数据维护流程。
  • 支持用户自定义会议和自定义节点。
  • 增加数据源健康检查与同步历史。
  • 将账号体系从本地演示迁移到可选的真实后端服务。

许可证

本项目基于 MIT License 开源,详见 LICENSE

About

iOS deadline tracker for academic conference submissions.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors