
Day of the Day
已上架Day of the Day 是一款原生 macOS 应用,可显示任意日期的有趣、特别和官方节日。除了带有日历和节日详情的主窗口外,该应用还在菜单栏中放置一个图标,可快速访问当天的节日,并提供桌面小组件,以及通过主题和背景图片进行细致的外观自定义。
/// 核心功能
- 为一年中的每一天精选独特节日的日历
- 在菜单栏一眼看到今日节日的图标
- 由 WidgetKit 驱动的桌面小组件
- 按类型筛选节日:官方与趣味
- 可切换的主题和背景图片
- 基于 StoreKit 2 的订阅与透明的付费墙
- 本地化为 4 种语言:英语、俄语、日语、简体中文
- 完全原生的 macOS 体验,启用 App Sandbox
/// 截图
关于项目
Day of the Day 源于一个简单的想法:当你早晨打开 Mac 时,应该立刻看到今天有什么特别之处。除了官方节日,这款应用还收录了数百个"有趣"的节日 —— 从国际拥抱日到程序员节 —— 并在三个位置同时呈现:主窗口、菜单栏和小组件。
使用场景
一眼即知
点击菜单栏图标即可查看今日节日。无需切换窗口,不打断工作流程。
内容规划
为社媒运营和内容创作者提供一年 365 天的话题素材。浏览明天、下周或任意日期即将到来的节日。
简单的好奇心
发现 10 月 16 日是上司日,3 月 20 日是国际幸福日。每天一点小发现。
技术决策
SwiftUI + AppKit 混合架构
主窗口完全使用 SwiftUI 构建,但状态栏项和弹出窗口由经典的 AppDelegate 配合 NSStatusItem 和 NSPopover 驱动。弹出窗口的内容是包裹 SwiftUI 视图的 NSHostingView —— 原生 AppKit 容器,搭配现代 UI 框架。
通过 @AppStorage 实现唯一可信源
所有用户偏好都集中在一个文件中,以 static @AppStorage 属性的形式存在。无需第三方库,即可解决主窗口、弹出窗口和小组件之间的同步问题。
把节日作为数据
节日数据库是约 380 KB 的内存 Swift 结构。没有 Core Data,没有网络请求 —— 所有内容都编译进二进制文件。即时启动,完全离线,完美契合 App Sandbox。
基于 StoreKit 2 的订阅
通过现代化的 StoreKit 2 实现变现,并提供本地配置文件用于测试。透明的付费墙、明确的恢复购买按钮、实时的订阅状态。
本地化
应用完整翻译为 4 种语言:英语、俄语、日语和简体中文。节日描述经过文化适配,而非机器翻译。
系统要求
- macOS 14.0 (Sonoma) 或更高版本
- Apple Silicon 或 Intel
- 约 50 MB 可用磁盘空间
- 支持 macOS 小组件