yilong.

about the author

张艺泷.

独立开发者。喜欢把"看起来很复杂"的产品拆成可解释的小块,再用尽量少的依赖把它们组装回去。 Yilong 是我用来证明这条路径的项目。

工程信条

结构 > 装饰

宁可少做一个动效,也要多写一行类型。视觉上的高级感来自留白和节奏,不是更多的渐变。

诚实 > 包装

我会在 README 里写清楚什么是 Roadmap、什么是已实现 — 装做『全都做完了』是面试一眼的扣分项。

可解释 > 玄学

AI 推荐如果讲不清打分逻辑,就不要叫 AI。Yilong 的推荐是规则化协同过滤,每一项分数都能溯源。

关键决策(与"为什么没做")

一个项目的质量不只由"做了什么"决定,更由"刻意没做什么"决定。下面是 Yilong 的关键取舍:

  • 为什么是 Next.js App Router 而不是 Vite + React?

    需要 SEO + 动态 metadata + ISR 边缘缓存。RSC 还让我把 Supabase 调用直接放进组件,省掉一层 API 路由。

  • 为什么是 Zustand 而不是 Redux/Jotai?

    购物车是高频写入但作用域窄的全局态,Zustand 50 行解决;远端态交给 React Query,本地与远端分离是当前最佳实践。

  • 为什么 RLS 写在数据库而不是应用层?

    权限下沉到 Postgres 层。即使应用代码出 bug,用户也读不到别人的订单。多租户场景里『安全是默认开』。

  • 为什么没接 LLM?

    餐饮推荐场景不需要黑盒。规则化协同过滤透明、可调试、零成本,效果对 11 道菜的样本足够好。引入 LLM 反而是反向工程。

  • 为什么没上 Redis?

    现在没有真实热点 key、没有跨实例需求。Next.js 的 ISR 已经在边缘缓存。如果接入 Redis,我会先在 Supabase 边上跑 Upstash,把订单状态机的派生值缓存(如门店队列长度),不会乱缓存菜单。

想聊聊?

如果你在做相关的产品 / 工程问题,或者只是想对项目提建议,欢迎直接在 GitHub 开 Issue 或 Discussion。

打开 GitHub