一个沉浸式限时写作工具。
它不是传统笔记应用,也不是长文档编辑器,而是一个强调“开始即写、限时输出、自动留痕”的写作冲刺界面。目标是尽量减少切换成本,让用户在几分钟内进入写作状态,而不是先被复杂功能分散注意力。
在线地址:
time-ink 提供的是一个单任务写作体验:
- 先选定写作时长
- 启动倒计时
- 在主编辑区持续输出
- 到时自动保存这一轮内容
它的核心价值不在“文档管理”,而在“把注意力压回当前这一轮写作”。
- 时长选择:
3 / 5 / 10 / 15 / 20 / 30 / 60分钟 - 倒计时:开始、暂停、重置
- 主编辑区实时输入
- 本地持久化:当前草稿、已保存内容、剩余时间
- 倒计时结束自动保存
- 复制本轮内容 / 复制已保存内容
- 清空本轮 / 重新开始
- 防误关页面提醒
- 快捷键:
Ctrl/Cmd + Enter:开始 / 暂停Ctrl/Cmd + L:清空本轮
这个项目虽然小,但有几条规则最好明确写清楚:
- 产品重点是“沉浸式限时写作”,不要把它扩成复杂文档系统
功能扩展要优先服务写作专注,而不是增加管理面板、设置层级和分心元素。 - 当前写作状态必须优先可靠
倒计时、编辑内容、保存状态这三者不能彼此打架;任何改动都不能破坏“写到一半刷新/误关后还能恢复”的体验。 - 本地持久化是核心能力,不是附加能力
当前草稿、已保存内容、剩余时间都属于核心状态,后续改动时要优先保证兼容已有存储逻辑。 - 自动保存必须可预期
到时自动保存、手动清空、重新开始,这几个动作的边界要清晰,不能让用户误以为内容丢失或被悄悄覆盖。 - 交互要轻,不要为了“酷”牺牲输入效率
动效、视觉层次、按钮反馈可以做,但不能妨碍快速开始、连续输入和快捷键操作。 - 键盘优先体验不能退化
这个项目的自然使用方式就是“进来就打字”,所以快捷键、焦点状态、输入流畅度要始终稳定。 - 部署与本地行为要尽量一致
本地开发、Vercel 部署、Docker/容器启动都应保持同一套页面行为,不要出现“本地正常,线上状态异常”的分叉。
如果只记一条,可以记这个:
time-ink 首先是一个写作冲刺工具,其次才是一个网页项目。
这个项目围绕一轮写作冲刺展开,默认流程是:
- 选择时间
- 开始写作
- 中途可暂停,但不鼓励频繁切换
- 到时自动归档本轮内容
- 用户决定继续下一轮,还是复制 / 清空 / 重开
也就是说,整个界面的重心应该始终放在:
- 当前倒计时
- 当前输入区
- 当前这一轮的保存结果
当前技术栈:
- Next.js 14
- React 18
- TypeScript
- Framer Motion
主要文件:
app/page.tsx:页面入口app/InkCanvas.tsx:核心交互与写作界面app/globals.css:全局样式app/layout.tsx:布局壳层public/brush-cursor.svg:视觉资源
运行方式:
npm install
npm run dev浏览器打开:
http://localhost:3000
当前仓库已经可以直接部署到:
- Vercel
- Docker 容器
相关文件:
Dockerfileserver.py
如果后续继续扩展部署方式,优先保持一件事:
- 不改变当前写作状态与保存逻辑
后续如果继续迭代,优先关注这三类改动:
- 写作体验
例如输入节奏、按钮反馈、计时焦点、视觉压迫感是否合适。 - 状态可靠性
例如刷新恢复、自动保存、误关提醒是否稳定。 - 发布一致性
例如本地开发、线上环境、不同浏览器下的行为是否一致。
不建议优先走的方向:
- 先做复杂账号系统
- 先做重型文档管理
- 先做很多与写作主线无关的功能页
因为这会让项目从“写作工具”变成“泛内容平台”,反而削弱它最好的地方。