把日程和课表,
放回你自己的设备里
一个本地优先的日程 / 课程表工具。数据全部存在你自己的设备上 —— 不注册、不登录、不上传、没有云。电脑上它是一块飘在桌面上的气泡区,手机上是同一套界面。
免安装 · 断网也能开 · 手机上可「添加到主屏幕」当 App 用 · 当前版本 v0.12.1 · 下载安装包
下载
四个渠道随你挑:网页端最快,安卓 / iOS 装成 App,电脑上是一块飘在桌面的气泡区。
电脑
- Windows:单文件 exe,双击自己解压再打开(不用装 Node.js);想要看得见全部文件就用文件夹版。桌面气泡那块悬浮窗也是 Windows 版。
- Linux:没有打包好的安装包 —— 拿源码包直接跑(装了 Node.js 22+ 之后 node server/main.js),或者干脆用网页版。
- macOS:同上(源码包 + node server/main.js,或网页版);桌面气泡悬浮窗目前只有 Windows 版。
文件都放在本页所在的这个站上(不经过 GitHub);下载页里每个文件都列了 SHA256 和体积,可以自己核一遍。
教程
三步就能用起来;下面还有一段 3 分钟的「AI 功能怎么配」。
- 先打开 最快是网页版:timetable-pwa.pages.dev。想装成 App 就下安卓 / iOS 包,电脑上装 exe。
- 把课表弄进去 课表页「课表设置」里可以粘贴 JSON、选 CSV 文件,也能一门一门手加;临时的事直接按 K 说一句「明天下午3点 交作业」。
- 让它提醒你 设置 → 提醒里挑提醒强度;电脑端还有一块飘在桌面的气泡区,剩得越少泡越大。
手机装到主屏幕:iPhone 用 Safari 打开 → 分享 → 添加到主屏幕; 安卓用 Chrome 打开 → 右上角 ⋮ → 安装应用 / 添加到主屏幕。
它能做什么
不是又一个"云日历",而是一块一直看得见的时间。
桌面气泡区
今天、明天要上的课和快到期的日程飘在桌面上:大小 = 还剩多久,颜色 = 事情多大。可拖动、可折叠、可点开看细节。
闹钟与计时器
一次性 / 每天 / 工作日 / 自定义重复,配不同的铃声;还有倒计时(想专注 25 分钟就拧一下)。
课程表
单双周、多节连堂、按周次范围显示(第 3–17 周的课不会在第 1 周就跑出来)。自己手加,或粘贴一份标准 JSON。
月历与列表
重复日程、倒数日、标签、颜色、回收站;逾期的事会自己浮上来,不用你去翻。
导出与分享
把某一天分享成图片,或导出 .ics 日历文件,塞进手机自带的日历 App。
一句话加日程
说一句「明天下午3点 在图书馆 交作业 提前20分钟」,它在本机把标题、时间、地点、提前多久拆好,先给你过一眼再落成泡泡 —— 不联网、不需要模型。
离线 / 深色 / 极简
装成 PWA 之后断网也能打开;深色跟随系统或手动切;字号三档;还有一套把装饰全去掉的极简样式。
说一句人话,它自己拆成日程
「✍️ 一句话加日程」是本机规则拆的:不联网、不需要模型、不花 API 钱 —— 你敲字的时候它已经在拆了。下面左边是回放,右边是真机录屏。
点一句试试(回放:结果就是 App 里真正解析出来的那几样)
拆完先打开编辑框让你过一眼:标题、截止时间、地点、提前多久都在上面, 确认之后才多出一颗新泡泡。认不出来的部分会原样留在标题里 —— 它不会瞎猜着改你的话。
那 AI 呢?AI 从哪儿来,你自己定
App 里另有几处真的会用到模型(今天的简报、周复盘、把一段话整理成日程); 模型要用谁的、稿子往哪儿发,是设置里明摆着的三档 —— 默认关闭,一个请求都不发。
① 本机小模型
在自己电脑上跑一个 OpenAI 兼容的小模型(llama.cpp / LM Studio / Ollama 都行),填上地址就能用:模型在你自己的机器上出稿,一个字都不出门。
② 你自己的 API Key
想用云端更强的模型也行:Key 只存在你这台设备上,请求从你的设备直接发给你选的那家,中间没有我们的服务器。
③ 电脑转发
手机 / 平板连到自己电脑上的服务,用电脑上的模型:设备里不留任何 Key,同一 Wi-Fi 下就能用。
不管选哪一档,都是从你的设备发出、发给你自己填的那个地址;这个项目没有收集端。第 ③ 档与「一句话加日程」无关 —— 后者压根不联网。
截图及讲解
下面是这套界面的真实截图(不是效果图)—— 每张下面一句说明它特别在哪儿。





开发者
源码全部公开(MIT 许可),运行时零依赖 —— 不装任何第三方库,也不用 npm install。
| 端 | 下载源码 | 解开后 | 说明 |
|---|---|---|---|
| 网页版 / 电脑版 | timetable-web-pc-v0.12.1-src.zip 1.15 MB | 162 个文件 | 本机那台 Node 服务 + 网页界面 + 桌面气泡的 C# 源。 |
| 安卓 | timetable-android-v0.12.1-src.zip 1.22 MB | 180 个文件 | Kotlin 原生壳(WebView + 本机服务 + 系统闹钟)+ 共用的 web/ 与 core/。 |
| iOS | timetable-ios-v0.12.1-src.zip 3.41 MB | 185 个文件 | Swift 原生壳(WebKit + AlarmKit)+ 共用的 web/ 与 core/。 |
三个包一共 5.78 MB;内容就是从公开树(node tools/export-public.mjs 的产物)里导出的,所以网页版跑的就是你下到的这一份代码。
- core/ 是平台无关的纯逻辑 —— 重复规则、提醒排程、逾期判断、气泡选择,没有一行碰浏览器或系统 API,Node 与网页版共用同一份。
- web/ 是界面(原生 ESM + 手写 CSS,没有框架、没有构建步骤),server/ 是电脑上那个只监听本机的 HTTP 服务。
- 安卓与 iOS 是两端原生壳,壳只做两件事:把 web/ 与 core/ 拷进包、接到本机服务上;所以这两个包里也带着同一份界面与逻辑。
- 电脑上那块飘在桌面的气泡区是单文件 C# 窗口程序:tools/desktop-bubbles/DesktopBubbles.cs。
这些源码包是从公开树导出的,和网页版跑的是同一份代码:包里不含官网落地页的截图(shots/)与打包产物(build/)—— 那两样不是源码。
你的数据在哪里
只有一处:你自己的设备。
- 没有账号系统 —— 不用注册、不用登录,也没有"找回密码"这种东西。
- 没有服务端 —— 网页版的数据存在你浏览器的本地存储里;装到手机上之后存在 App 的私有目录里。
- 没有埋点、没有统计 —— 这一页本身也不发任何第三方请求:没有 CDN、没有外部字体、没有访问统计。
- 想带走随时带走 —— 导出 .ics 或分享成图片;数据不会被锁在这个工具里。
常见问题
要钱吗?
不要。MIT 许可,源码在 GitHub 上公开,随便看、随便改。
我的日程会被上传吗?
不会。这个项目没有服务端,也没有任何账号体系;网页版的数据在浏览器的本地存储里,装到手机上的数据在 App 自己的目录里。断网也一样能用。
AI 会把我写的东西传到哪儿去?
默认哪儿都不去:AI 来源的默认档就是「关闭」,一个请求都不发,简报照旧用离线模板生成。开着的时候,稿子只发到你自己填的那个地址 —— 自己电脑上的本机模型、或你自己 Key 的那家云端服务;这个项目没有收集端,也没有中转服务器。而「一句话加日程」不走 AI,压根不联网。
网页版和下载的 App 是同一个东西吗?
是同一套界面和同一份核心逻辑。App 多出来的主要是"系统级"能力:到点真的响的闹钟、桌面气泡区、以及跟着系统走的通知。
怎么把课表弄进去?
手加最直接;课程多的话可以粘贴一份标准 JSON(格式说明在仓库 README 里),或者用列表视图批量加。
换手机会丢数据吗?
本机数据不会自己飞过去,所以要自己带:网页版可以导出 .ics,安卓端还有一条 USB 单向同步(电脑 → 手机)。