Skip to content

zijianxcode/time-ink

Repository files navigation

time-ink

一个沉浸式限时写作工具。

它不是传统笔记应用,也不是长文档编辑器,而是一个强调“开始即写、限时输出、自动留痕”的写作冲刺界面。目标是尽量减少切换成本,让用户在几分钟内进入写作状态,而不是先被复杂功能分散注意力。

在线地址:

项目在做什么

time-ink 提供的是一个单任务写作体验:

  • 先选定写作时长
  • 启动倒计时
  • 在主编辑区持续输出
  • 到时自动保存这一轮内容

它的核心价值不在“文档管理”,而在“把注意力压回当前这一轮写作”。

核心功能

  • 时长选择:3 / 5 / 10 / 15 / 20 / 30 / 60 分钟
  • 倒计时:开始、暂停、重置
  • 主编辑区实时输入
  • 本地持久化:当前草稿、已保存内容、剩余时间
  • 倒计时结束自动保存
  • 复制本轮内容 / 复制已保存内容
  • 清空本轮 / 重新开始
  • 防误关页面提醒
  • 快捷键:
    • Ctrl/Cmd + Enter:开始 / 暂停
    • Ctrl/Cmd + L:清空本轮

仓库规则

这个项目虽然小,但有几条规则最好明确写清楚:

  1. 产品重点是“沉浸式限时写作”,不要把它扩成复杂文档系统
    功能扩展要优先服务写作专注,而不是增加管理面板、设置层级和分心元素。
  2. 当前写作状态必须优先可靠
    倒计时、编辑内容、保存状态这三者不能彼此打架;任何改动都不能破坏“写到一半刷新/误关后还能恢复”的体验。
  3. 本地持久化是核心能力,不是附加能力
    当前草稿、已保存内容、剩余时间都属于核心状态,后续改动时要优先保证兼容已有存储逻辑。
  4. 自动保存必须可预期
    到时自动保存、手动清空、重新开始,这几个动作的边界要清晰,不能让用户误以为内容丢失或被悄悄覆盖。
  5. 交互要轻,不要为了“酷”牺牲输入效率
    动效、视觉层次、按钮反馈可以做,但不能妨碍快速开始、连续输入和快捷键操作。
  6. 键盘优先体验不能退化
    这个项目的自然使用方式就是“进来就打字”,所以快捷键、焦点状态、输入流畅度要始终稳定。
  7. 部署与本地行为要尽量一致
    本地开发、Vercel 部署、Docker/容器启动都应保持同一套页面行为,不要出现“本地正常,线上状态异常”的分叉。

如果只记一条,可以记这个:

time-ink 首先是一个写作冲刺工具,其次才是一个网页项目。

当前交互逻辑

这个项目围绕一轮写作冲刺展开,默认流程是:

  1. 选择时间
  2. 开始写作
  3. 中途可暂停,但不鼓励频繁切换
  4. 到时自动归档本轮内容
  5. 用户决定继续下一轮,还是复制 / 清空 / 重开

也就是说,整个界面的重心应该始终放在:

  • 当前倒计时
  • 当前输入区
  • 当前这一轮的保存结果

技术结构

当前技术栈:

  • 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 容器

相关文件:

  • Dockerfile
  • server.py

如果后续继续扩展部署方式,优先保持一件事:

  • 不改变当前写作状态与保存逻辑

维护建议

后续如果继续迭代,优先关注这三类改动:

  1. 写作体验
    例如输入节奏、按钮反馈、计时焦点、视觉压迫感是否合适。
  2. 状态可靠性
    例如刷新恢复、自动保存、误关提醒是否稳定。
  3. 发布一致性
    例如本地开发、线上环境、不同浏览器下的行为是否一致。

不建议优先走的方向:

  • 先做复杂账号系统
  • 先做重型文档管理
  • 先做很多与写作主线无关的功能页

因为这会让项目从“写作工具”变成“泛内容平台”,反而削弱它最好的地方。

About

沉浸式限时写作工具,强调专注输入、自动留痕与可靠保存。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors