web
o0oi1i.io
2026年8月31日Next.js · Supastarter · Content Collections · Vercel
showcasenextjs
问题
o0oi1i.io 要同时做两件事:它是全栈产品开发者的作品集,也是这件作品的第一件成品。访客应看到精选作品、笔记,以及之后真实的习惯和任务数据,而不是还在讲 workspace 和退款的 SaaS 模板首页。
中英必须能独立成篇。英文由 AI 出草稿,人确认之前不能上线。不能假定一种语言可以随便顶替另一种。
过程
先冻结产品基线:第一发布是展示站加 owner 公开数据;注册和付费放第二发布。视觉参考 Academind 的距离——深色底、紫色强调、玻璃卡片——标题用自托管 Rubik,正文用 Nunito。
实施顺着访客路径:token 和字体、Logo、主题、默认 lite 的动效、首页顺序,然后独立的 /work、/data、/pricing。Changelog 和法律页按本站重写。正式社交只有 GitHub、X、YouTube。
内容放在 Content Collections。博客和作品共用 slug/locale 文件约定,以及 draft | review | published。公开列表、详情和 sitemap 只收 published。某一语言还是草稿时,不借用另一语言已经上线的译文。
方案
o0oi1i.io是展示站;app.o0oi1i.io将是登录后的产品。共享 package,不用 Headless CMS。- MDX 可以嵌代码、YouTube、音频、玻璃卡片和注册过的 React 演示。
- 静图放在
public/images/,走next/image并按栏宽设置sizes。视频、音频和其他大文件只保存 URL。 - 动效默认轻量色洗。完整 WebGL 需显式打开。
prefers-reduced-motion或画布失败时页面仍可完整阅读。
这篇案例就是把这套管线用在自己身上:中英都是独立文件,各自确认后再 published。
结果
展示站已有一级页面、双语法律文案,以及可以拒绝发布某一语言的内容 schema。这是第一篇真实作品。中文在 /zh/work,英文在 /work。
还没做的:接入 owner 公开数据、换掉剩下的模板博客、开放注册。
复盘
最大的风险是把 starter 的口气当成产品声音。模板博客不要写进叙事。不要因为英文好了就发布中文,反过来也不行。