EN: IdeaCapture is an experimental iOS app built with SwiftUI + SpriteKit, designed to capture and visualize ideas.
CN: IdeaCapture 是一个使用 SwiftUI + SpriteKit 构建的实验性 iOS 应用,主要用于灵感捕捉与可视化管理。
-
📌 Idea Management / 灵感管理
- Create, archive, delete ideas / 创建、归档、删除点子
- Organize ideas by project / 通过项目组织点子
- Export
.txtfile of ideas / 导出项目点子为.txt
-
🎨 Visualization / 可视化
- BubbleCanvas: SwiftUI random layout with wobble animation
BubbleCanvas:SwiftUI 随机布局 + 抖动动画 - BubbleScene: SpriteKit physics bubbles (DVD bounce or Gravity)
BubbleScene:SpriteKit 物理气泡(DVD 弹跳 / 重力模式)
- BubbleCanvas: SwiftUI random layout with wobble animation
-
🔔 Notifications & Calendar / 通知与日历
- Local countdown notifications (24h, 12h, 2h, 1h, 30m, 10m)
本地倒计时提醒(24h、12h、2h、1h、30m、10m) - EventKit integration, auto-create calendar events
集成 EventKit,自动写入日历
- Local countdown notifications (24h, 12h, 2h, 1h, 30m, 10m)
-
🏝️ Live Activities / 灵动岛
- Real-time countdown on Dynamic Island (iOS 16.1+)
灵动岛实时倒计时(iOS 16.1+) - Compact / Expanded / Minimal states
紧凑 / 展开 / 极简三种状态
- Real-time countdown on Dynamic Island (iOS 16.1+)
-
🚀 Onboarding / 引导
- Multi-step setup wizard with project details
多步骤引导页(摘要、标签、目标、受众、语气) - Advanced options: deadline, Live Activity, notifications
高级选项:截止日期、灵动岛、通知
- Multi-step setup wizard with project details
-
⚙️ Settings & Developer Mode / 设置与开发者模式
- Switch between BubbleCanvas and BubbleScene
切换可视化模式(BubbleCanvas / BubbleScene) - Unlock hidden developer mode by tapping version 7 times
点击版本号 7 次解锁开发者模式 - Debug tools: force onboarding, test notifications, test Live Activity
调试工具:重置引导、测试通知、测试灵动岛
- Switch between BubbleCanvas and BubbleScene
- Idea.swift
- Stores
id, content, project, createdAt, fontName, fontSize, colorHex, isArchived - 使用
Codable + UserDefaultsJSON 存储
- Stores
- IdeaViewModel
- Manages all projects, ideas, configs, and metadata
- 调度通知、日历、灵动岛逻辑
- Implemented in
ContentView.swiftusingDragGesture
在ContentView.swift中使用DragGesture实现 - Rule:
- Only if drag starts within left 20px → allow opening sidebar
- 只有手势起点在左边 20px 内才允许打开侧边栏
- Threshold:
- If drag offset > 40% of sidebar width → open
- 向右拖拽超过侧边栏宽度 40% → 打开
- DVD Mode / DVD 模式
restitution = 1→ 完全弹性碰撞friction = 0→ 无摩擦- Random initial velocity
-100...100
初始速度随机-100...100
- Gravity Mode / 重力模式
- Uses
CoreMotionaccelerometer or device motion
使用CoreMotion加速度计或设备方向 - Updates physics world:
let dx = g.x * gravityStrength let dy = g.y * gravityStrength physicsWorld.gravity = CGVector(dx: dx, dy: dy)
- 实时根据设备姿态改变重力方向
- Uses
- Reminder offsets (in seconds):
[86400, 43200, 7200, 3600, 1800, 600]- 对应 24h, 12h, 2h, 1h, 30m, 10m
- Trigger type:
UNTimeIntervalNotificationTrigger
- Based on ActivityKit + WidgetKit
- Countdown text formatter:
-
1 hour →
"xh ym" - <1 hour →
"ym" - expired →
"已到期" / "Expired"
-
- Compact → shows short label (e.g.,
45m) - Expanded → project name + countdown
IdeaCapture/
├── IdeaBubbleApp.swift # App entry / 入口
├── ContentView.swift # Main UI with Sidebar / 主界面 + 侧边栏
├── BubbleCanvas.swift # SwiftUI bubble layout / SwiftUI 气泡布局
├── BubbleScene.swift # SpriteKit bubble physics / SpriteKit 物理气泡
├── AllIdeasView.swift # Idea list with search / 点子列表 + 搜索
├── ProjectEditorView.swift # Project editing / 编辑项目
├── ProjectSettingsView.swift # Project config / 项目配置
├── OnboardingView.swift # Onboarding wizard / 引导页
├── SettingsView.swift # Settings + Developer mode / 设置 + 开发者模式
├── Idea.swift # Data model + ViewModel / 数据模型 + VM
├── NotificationManager.swift # Local notifications / 通知
├── CalendarManager.swift # EventKit integration / 日历
├── LiveActivityManager.swift # ActivityKit wrapper / 灵动岛封装
├── APIService.swift # Mock login API / 登录接口
├── NewWidgetExtension/ # Widget + Live Activity extension / 小组件
└── web-backend/ # 后端网站(PHP + MySQL)
- Some features only available on iOS 16.1+
部分功能仅限 iOS 16.1+ - 云端上传 / 服务器交互功能未公开 → 功能残缺状态
- Located in
/web-backend - Built with PHP + MySQL
- Provides planned API endpoints for:
- Idea upload & sync / 点子上传与同步
- User login & project binding / 用户登录与项目绑定
- Database name:
ideaapi_jackiezy - Tables:
projects→ 存放项目基本信息project_opinions→ 存放项目意见/反馈snapshots→ 存放项目快照users→ 存放用户信息(仅示例用户,无真实数据)
- 创建数据库:
CREATE DATABASE ideaapi_jackiezy CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; - 导入结构和示例数据:
mysql -u root -p ideaapi_jackiezy < web-backend/ideaapi_jackiezy.sql
-
克隆本仓库并在 Xcode 中打开:
git clone https://github.com/JackieZ123430/IdeaCapture.git cd IdeaCapture open IdeaCapture.xcodeproj -
开发环境说明
- 本项目开发于 Xcode 26 beta 4
- 可以在 更高版本或正式版 Xcode 中正常打开与运行
- 运行环境要求:iOS 18 – iOS 26
-
功能说明
- 本地功能(点子管理、项目管理、气泡可视化、通知、灵动岛倒计时等)均可正常使用
- 部分依赖服务器的功能(云端上传、账号验证等)目前未公开 → 功能不可用,后续可能开放
-
开发者模式
- 原本 双击版本号 7 次 解锁的云端逻辑已被禁用
- 如需使用云端验证账户是否能启动开发者工具,请直接在代码中手动开启:
@AppStorage("DebugEnabled") private var debugEnabled: Bool = true
- 本项目已停止维护,Pull Request 不再主动合并。
- 欢迎 fork 本仓库,用于个人学习或扩展功能。
- 请遵守 Apache License 2.0。
- 初始开源版本
- 包含点子管理、BubbleScene、通知、日历、灵动岛功能
- 云端上传功能未公开
- 新增 Web Backend(PHP + MySQL,含数据库结构
ideaapi_jackiezy)
- Apple 官方文档(SwiftUI / SpriteKit / ActivityKit / EventKit / UserNotifications)
- GitHub Actions for iOS CI/CD
- 参考灵感来自 Things、Notion 等效率应用
- EN: This project is abandoned, but serves as a reference for SwiftUI + SpriteKit + PHP/MySQL integration.
- CN: 本项目 已弃坑,但可作为 SwiftUI + SpriteKit + PHP/MySQL 集成的参考示例。








