从 250 行极简原型到产品级 Web 应用——每次提交都是一次能力跃升
单一暗色硬编码主题,5 种风格按钮,一个输入框一个输出框。通过 Node.js 代理转发 DeepSeek API 解决 CORS。仅有基础的 fetch 错误判断。代码 250 行,但已是功能完整的 MVP。
引入 CSS 自定义属性实现亮/暗主题切换,依系统偏好自动选择。风格从 5 种扩展到 7 种(+武侠 +赛博朋克)。首创创意程度滑块(忠实原意 ↔ 最大趣味),temperature 0.3~1.2 动态映射。新增原文/译文对比视图、结果操作按钮组、随机风格、自定义风格、报告错误。
产品正式更名为 ToneTwist,建立品牌标识。首度引入 SEO 体系(meta description / keywords / robots / canonical)。实现完整的本地历史记录面板:自动保存每次转换、渲染列表、点击回填原文、清空操作、50 条防溢出。
集成 Supabase BaaS:邮箱注册登录 + GitHub OAuth。引入每日免费额度控制(3 次/天)与三档定价(免费 / 进阶 ¥9.9/月 / 学生 ¥4.9/月),支付宝/微信支付弹窗。新增云端历史同步、社区作品墙、风格投票、点赞/点踩反馈、隐私政策弹窗、ARIA 无障碍。代码膨胀至 1358 行。
全面重构 CSS 为统一设计令牌体系(--bg/--surface/--border/--text/--muted/--accent/--gold)。字体升级为 Noto Serif SC(正文)+ JetBrains Mono(界面)。新增 CSS 工具提示、可折叠面板、动画系统、自定义滚动条、徽章体系。代码 逆势精简 19%(1358→1099 行),功能完整度不变。
| 功能维度 | V1 · 原型 | V2 · 主题 | V3 · 品牌 | V4 · 商业 | V5 · 终极 |
|---|---|---|---|---|---|
| 🎨 视觉 & 体验 | |||||
| 亮暗主题 | — | CSS变量 | ✓ | ✓ | 设计令牌 |
| 预设风格数 | 5 | 7 | 7 | 7 | 7 |
| 创意程度滑块 | — | ✓ | ✓ | ✓ | ✓ |
| 自定义风格 | — | ✓ | ✓ | ✓ | ✓ |
| 随机风格 | — | ✓ | ✓ | ✓ | ✓ |
| CSS工具提示 | — | — | — | — | ✓ |
| 折叠面板 | — | — | — | — | ✓ |
| CSS动画 | — | — | — | — | fadeUp/spin |
| 字体体系 | Inter | Inter | Inter | Inter | Serif+Mono |
| 主题色系 | 暗紫单色 | 紫/蓝 | 紫/蓝 | 紫/蓝/绿/黄 | 暖纸张系 |
| 📝 结果操作 | |||||
| 原文/结果对比 | — | ✓ | ✓ | ✓ | ✓ |
| 复制结果 | — | ✓ | ✓ | ✓ | ✓ |
| 重写/分享链接 | — | ✓ | ✓ | ✓ | ✓ |
| 原意保留提示 | — | ✓ | ✓ | ✓ | ✓ |
| 字数统计 | — | — | — | ✓ | ✓ |
| 点赞/点踩 | — | — | — | ✓ | ✓ |
| 错误报告 | — | 基础 | ✓ | ✓ 邮件 | ✓ |
| 🔍 SEO & 品牌 | |||||
| SEO meta/OG | — | — | ✓ 完整 | ✓ | ✓ |
| 品牌名称 | 氛围学习 | VibeText | ToneTwist | ToneTwist | ToneTwist |
| sitemap/robots | — | — | — | ✓ | ✓ |
| 🔐 账号系统 | |||||
| 用户注册/登录 | — | — | — | ✓ | ✓ |
| GitHub OAuth | — | — | — | ✓ | ✓ |
| 本地历史记录 | — | — | ✓ | ✓ | ✓ |
| 云端历史(DB) | — | — | — | ✓ | ✓ |
| 💳 商业化 | |||||
| 每日额度控制 | — | — | — | ✓ 3次 | ✓ 3次 |
| 升级定价 | — | — | — | 3档 | 3档 |
| 支付弹窗 | — | — | — | QR码 | 精简 |
| 🏆 社区 & 隐私 | |||||
| 作品墙 | — | — | — | ✓ | ✓ |
| 风格投票 | — | — | — | ✓ | ✓ |
| 隐私政策 | — | — | — | ✓ 弹窗 | ✓ 弹窗 |
| 🛡️ 工程品质 | |||||
| API错误分类 | — | — | — | HTTP状态码 | +超时+网络 |
| API超时保护 | — | — | — | — | 30s Abort |
| ARIA无障碍 | — | — | — | ✓ | ✓ |
| 代码行数 | 250 | 567 | 650 | 1358 | 1099 (−19%) |
| 文件数 | 2 | 1 | 1 | 3 | 1 |
V1 硬编码暗色 → V2 CSS变量明暗切换 → V5 设计令牌语义化体系。从「写死值」到「全局设计系统」的完整跨越。
V3 将产品从「氛围学习」确定为 ToneTwist,沿用至今。品牌统一是产品化的第一步。
V4 引入 Supabase BaaS,实现邮箱注册登录、GitHub OAuth、云端历史同步——从工具到平台的质变。
V4 实现完整 freemium 模型:每日免费额度 → 三档定价 → 支付宝/微信支付弹窗 → 学生优惠。
V5 在不减功能的前提下,通过设计令牌 + 组件类化 + 合并冗余,将 1358 行精炼为 1099 行。
V3 起建立 SEO 基础,V4 补齐 sitemap.xml + robots.txt。品牌关键词覆盖完整。
V2 首创创意滑块:0%=严格忠实 → 50%=中等 → 100%=最大趣味,temperature 0.3~1.2 动态映射 + 5 档 prompt 微调。
V1 无保护 → V2 参数动态 → V4 HTTP状态码分类 → V5 AbortController 30s超时 + 网络异常独立捕获。
V3 首次实现本地历史(localStorage),V4 升级为本地+Supabase云端双轨,未登录/已登录场景全覆盖。