我打造了一个聚合30+个 IT 新闻来源的平台,让你无需逐一查看
Source: Dev.to
请提供您希望翻译的完整文本内容,我将按照要求保留来源链接、格式和代码块,仅翻译正文部分。
🤔 问题
作为一名在韩国的开发者,我每天早上花了太多时间浏览:
- 韩国科技博客(Kakao、Toss、Woowa Brothers、Naver、Line)
- IT 新闻网站(ZDNet Korea、IT Donga、Digital Times)
- 国际科技媒体
- YouTube 科技频道
我想要一个统一的地方来阅读所有内容。于是我自己搭建了它。
🚀 介绍 한눈IT (HanunIT)
한눈IT 在韩语中意为“IT 一目了然”。它是一个内容聚合平台,收集、摘要并提供最新的 IT 文章和视频,提供清爽的阅读体验。
✨ 关键特性
📰 文章聚合
持续通过 RSS 源从 30+ 来源收集文章。新内容全天不断流入——无需手动策划。
📝 AI 驱动的摘要
每篇文章都配有简明摘要。几分钟内浏览数十篇文章,只深入阅读对你重要的内容。
🌐 翻译文章
国际技术文章会自动翻译成韩语,帮助韩语开发者跨越语言障碍。
🎬 技术视频策展
精选的 YouTube 技术视频与文字文章一起收集。根据心情在阅读和观看之间切换。
💬 社区功能
对文章发表评论,点赞收藏,与其他开发者参与讨论。
📧 新闻通讯
订阅每周汇总,将精选文章直接发送到你的收件箱。
🛠️ 技术栈
| 层级 | 技术 |
|---|---|
| 框架 | Next.js 15 (App Router, Turbopack) |
| 语言 | TypeScript |
| 数据库 | Supabase (PostgreSQL + RLS) |
| 认证 | Supabase Auth |
| 状态管理 | TanStack Query + Zustand |
| 样式 | Tailwind CSS + Shadcn UI |
| 部署 | Vercel |
| 分析 | Vercel Analytics |
📐 架构亮点
服务器端渲染与缓存 – 文章页面使用
revalidate = 300进行 ISR。API 路由返回s‑maxage=300, stale‑while‑revalidate=600响应头,实现快速的首次加载且无需每次都访问数据库。// Example in a Next.js page export const revalidate = 300; // ISR: revalidate every 5 minutes并行数据获取 – 文章详情页使用
Promise.allSettled同时发起多个 Supabase 查询,而不是顺序 await,加载时间约缩短 40 %。const results = await Promise.allSettled([ supabase.from('articles').select(), supabase.from('comments').select(), ]);智能客户端缓存 – TanStack Query 设置 5 分钟的 stale 时间和 30 分钟的垃圾回收。用户在页面之间切换时几乎看不到加载指示器。
按请求去重 – 在服务器组件中使用
React.cache()获取文章数据,使generateMetadata与页面组件共享同一份数据,避免重复的数据库请求。const fetchArticle = React.cache(async (id) => { const { data } = await supabase .from('articles') .select() .eq('id', id) .single(); return data; });
📸 截图

🤷 我学到的
- RSS 订阅源很混乱 – 每个来源的格式都有细微差别。我在解析边缘情况上花的时间比预期的要多。
- Supabase RLS 功能强大但棘手 – 行级安全策略需要提前仔细规划。调试权限错误并不有趣。
- Next.js 15 App Router 很棒 – 服务器组件 + 流式传输 + ISR 是内容密集型站点的可靠组合。
🙏 欢迎反馈
我很想听听:
- 您希望添加哪些 IT 资源?
- 您有什么 UX 改进建议吗?
- 您会在本地技术生态系统中使用类似的东西吗?
感谢阅读!留下评论或访问查看。