纯粹的Vibe Coding,我用 Next.js + Tailwind 撸了一个酷炫的宝可梦开包模拟器

82 阅读2分钟

作为一个写代码的宝可梦老粉,我一直觉得市面上的“随机生成器”或者“组队工具”大多还停留在 Web 1.0 时代——功能虽然强大,但界面全是枯燥的表格和文字,毫无交互感可言。

于是我利用一个周末的时间,用AI纯粹的Vibe Coding,开发了 PokeSuite。我的目标很简单:做一个视觉优先、动效拉满的现代化宝可梦工具箱。

今天项目刚刚在 Product Hunt 上线,特地来掘金分享一下背后的技术栈和开发心得。

🛠️ 技术栈选型

作为一个“视觉系”项目,性能和开发体验是我最看重的:

  • 框架:Next.js 14 (App Router) :利用 SSR 和 ISR 保证首屏加载速度,对 SEO 极其友好。
  • 样式:Tailwind CSS:不用多说,写响应式和暗黑模式(Dark Mode)的神器。
  • 动画:CSS Modules + Framer Motion:为了实现丝滑的“卡包撕开”和“转盘”效果。
  • 数据源:PokeAPI:调用了开源的 GraphQL 接口获取 1025 只宝可梦的数据。
  • 状态管理:React Context + LocalStorage:为了让用户体验极致的“无感”,我放弃了强制登录,直接用本地存储保存用户的收藏和组队记录。
  • 部署:Vercel:零配置部署,全球 CDN 加速。

💻 核心功能与挑战

1. 拟真的 TCG 开包动画 这是我最满意的部分。Codex给我带来极致的爽感,整个过程基本一次过。通过 perspectiverotateY 的组合,配合音效,还原了卡包被“撕开”那一瞬间的爽感。

2. 组队器的复杂筛选 对于对战党来说,筛选是核心。我实现了基于 Smogon 分级 (OU/UU)VGC 规则 的过滤器。这里的难点在于如何在前端处理庞大的 JSON 数据而不阻塞主线程,最终我通过优化数据结构解决了性能瓶颈。

3. 移动端适配 Tailwind 的 mobile-first 策略帮了大忙。我花了很多时间调整 Grid 布局,确保那个包含 1000+ 个精灵球的 Canvas 动画在手机上也能跑满 60帧。

🚀 项目上线

目前 PokeSuite 已经完全免费上线,无需注册即可使用所有功能。

今天我把它提交到了 Product Hunt,如果你对独立开发、Next.js 实战或者宝可梦感兴趣,欢迎来体验!

如果你对代码实现细节感兴趣,或者有任何 UI 交互上的建议,欢迎在评论区交流!