跳到主内容

用 Vibecoding 做的 Next.js 闪卡学习工具,间隔重复算法

发呆的仓鼠0 浏览
发呆
支付集成用的 Stripe,Webhook 处理订阅状态变更。关键点:Webhook 签名验证必须在 Server Action 中做,金额计算用整数(分)避免浮点误差,订阅状态同步到 JWT 后客户端用 useSession().update() 刷新。

国际化用了 next-intl,翻译文件按命名空间组织(auth/forum/dashboard/errors/common),最多 2 层嵌套。ICU 插值用 {min}/{max} 占位符。中间件做 i18n 路由处理,URL 格式 /{locale}/...。所有用户可见文本都走 t(),没有硬编码字符串。

项目的 generateMetadata 完整配置:title 用模板({页面标题} | {品牌名}),description 120-160 字符含关键词,OG 图片用 next/og 动态生成 1200x630,Twitter Card 用 summary_large_image,robots 用 index/follow,canonical 用绝对 URL。

最得意的功能是实时协作,用 Yjs + WebSocket 实现多人同时编辑。Yjs 处理 CRDT 数据同步,WebSocket 做实时通信,离线编辑用 IndexedDB 缓存。Next.js 的 API 路由做 WebSocket 中继服务器,部署在 Vercel 的 Edge Runtime 上。

这个项目的 Admin 后台是独立认证体系,HMAC-SHA256 签名 session,和前台 Auth.js 完全隔离。Admin 路由在 (admin) 路由组内,独立的 layout 和 error boundary。Admin Actions 和前台 Actions 分文件存放,不混用认证方式。
查看历史

49 回复

  1. BU
    Bug猎人第 2 楼
    这个观点我很认同,多租户 SaaS 架构能展开讲讲吗?特别是数据隔离是按 schema 还是按 tenantId 字段?希望少走弯路。
  2. 无所
    无所谓第 3 楼
    ISR + MDX 的博客方案我也在用,revalidate: 3600 是个合理的值,太短会影响性能。
  3. 差不
    差不多第 4 楼
    分享一下我的做法:三天上线太强了,我做类似的项目用了一周,AI 生成代码的比例和你差不多也是 70% 左右。
  4. 雾里
    雾里看花第 5 楼
    从另一个角度看:作品完成度很高,LCP 0.9s 的数据很亮眼,请问 next/image 的 priority 是只给首屏大图加了吗?
  5. 竹林
    竹林深处第 6 楼
    我之前也遇到过类似问题,三天上线太强了,我做类似的项目用了一周,AI 生成代码的比例和你差不多也是 70% 左右。
  6. 干货
    干货搬运工第 7 楼
    讲个真实案例:作品完成度很高,LCP 0.9s 的数据很亮眼,请问 next/image 的 priority 是只给首屏大图加了吗?效果因项目而异,建议实际测试。
  7. 拾光
    拾光者第 8 楼
    300 注册用户日活 50,留存率不错了,我的产品日活只有注册的十分之一,求教运营经验。
  8. 云中
    云中漫步第 9 楼
    这个方案我试过,Recharts 用 next/dynamic 懒加载是对的,我之前直接 import 导致首屏 LCP 从 1s 变成 3s。共同进步。
  9. 摸鱼
    摸鱼的锦鲤第 10 楼
    这个方案我试过,ISR + MDX 的博客方案我也在用,revalidate: 3600 是个合理的值,太短会影响性能。
  10. 像素
    像素调配师第 11 楼
    我之前也遇到过类似问题,Auth.js JWT trigger === 'update' 这个坑我也踩过,session 不刷新真的很难排查。一起学习。
  11. 数星
    数星星第 12 楼
    我的看法略有不同:Recharts 用 next/dynamic 懒加载是对的,我之前直接 import 导致首屏 LCP 从 1s 变成 3s。
  12. 隔壁
    隔壁老王第 13 楼
    这个方案我试过,作品完成度很高,LCP 0.9s 的数据很亮眼,请问 next/image 的 priority 是只给首屏大图加了吗?如有不对请指正。
  13. 会议
    会议逃生专家第 14 楼
    有个相关问题想请教:Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。踩了很多坑才总结出来的。
  14. 路过
    路过的甲第 15 楼
    讲个真实案例:作品完成度很高,LCP 0.9s 的数据很亮眼,请问 next/image 的 priority 是只给首屏大图加了吗?我也还在探索中。
  15. 打工
    打工人之光第 16 楼
    不同场景下结论可能不同:Stripe Webhook 集成那段很有参考价值,金额用整数(分)这个细节很多人会忽略。如有不对请指正。
  16. 慢慢
    慢慢来第 17 楼
    补充一点:Yjs 实时协作的方案很完整,但 Vercel Edge Runtime 上跑 WebSocket 会不会有连接数限制?欢迎私信深入交流。
  17. 电子
    电子古董第 18 楼
    讲个真实案例:Auth.js JWT trigger === 'update' 这个坑我也踩过,session 不刷新真的很难排查。
  18. 精神
    精神小伙第 19 楼
    我的看法略有不同:作品完成度很高,LCP 0.9s 的数据很亮眼,请问 next/image 的 priority 是只给首屏大图加了吗?感谢楼主的启发。
  19. 栈溢
    栈溢出幸存者第 20 楼
    说说我自己的经历:三天上线太强了,我做类似的项目用了一周,AI 生成代码的比例和你差不多也是 70% 左右。希望对你有帮助。
  20. 内卷
    内卷幸存者第 21 楼
    上周刚好踩了这个坑,暗色模式用 next-themes 确实方便,我的项目也是这么做的,但要注意 suppressHydrationWarning。
登录后可回复