30개 이상 IT 뉴스 소스를 모아주는 플랫폼을 만들었습니다, 그래서 모두 확인할 필요가 없습니다
Source: Dev.to
위에 제공된 링크에 포함된 전체 텍스트를 알려주시면, 해당 내용을 한국어로 번역해 드리겠습니다. 현재는 링크 자체만 제공되어 있어 번역할 본문이 없습니다. 텍스트를 복사해서 붙여 주시면 바로 번역해 드리겠습니다.
🤔 문제
한국에 있는 개발자로서, 매일 아침 너무 많은 시간을 다음을 방문하는 데 보내고 있었습니다:
- 한국 기술 블로그 (Kakao, Toss, Woowa Brothers, Naver, Line)
- IT 뉴스 사이트 (ZDNet Korea, IT Donga, Digital Times)
- 국제 기술 매체
- YouTube 기술 채널
모든 것을 한 곳에서 읽고 싶었습니다. 그래서 만들었습니다.
🚀 한눈IT (HanunIT) 소개
한눈IT는 한국어로 “IT at a glance”라는 의미입니다. 최신 IT 기사와 동영상을 수집·요약·제공하여 깔끔한 독서 환경을 제공하는 콘텐츠 집계 플랫폼입니다.
✨ 주요 기능
📰 기사 집계
RSS 피드를 통해 30개 이상의 소스에서 지속적으로 기사를 수집합니다. 하루 종일 새로운 콘텐츠가 흐르며, 수동 큐레이션이 필요 없습니다.
📝 AI‑기반 요약
모든 기사에 간결한 요약이 제공됩니다. 수십 개의 기사를 몇 분 안에 스캔하고, 중요한 내용만 깊이 파고들 수 있습니다.
🌐 번역된 기사
국제 기술 기사가 자동으로 한국어로 번역되어, 한국어 개발자들의 언어 장벽을 해소합니다.
🎬 기술 비디오 큐레이션
선별된 YouTube 기술 비디오가 글 기사와 함께 수집됩니다. 기분에 따라 읽기와 시청을 전환하세요.
💬 커뮤니티 기능
기사에 댓글을 달고, 좋아하는 글에 좋아요를 누르고, 다른 개발자와 토론에 참여하세요.
📧 뉴스레터
주간 다이제스트를 구독하고 최고의 기사를 받은편지함으로 받아보세요.
🛠️ 기술 스택
| 레이어 | 기술 |
|---|---|
| Framework | Next.js 15 (App Router, Turbopack) |
| Language | TypeScript |
| Database | Supabase (PostgreSQL + RLS) |
| Auth | Supabase Auth |
| State | TanStack Query + Zustand |
| Styling | Tailwind CSS + Shadcn UI |
| Deployment | Vercel |
| Analytics | Vercel Analytics |
📐 아키텍처 하이라이트
-
Server‑side rendering with caching – Article pages use
revalidate = 300for ISR. API routes returns‑maxage=300, stale‑while‑revalidate=600headers, giving fast initial loads without hitting the DB every time. -
Parallel data fetching – Article detail pages fire multiple Supabase queries with
Promise.allSettledinstead of sequential awaits, shaving ~40 % off load times. -
Smart client caching – TanStack Query with a 5‑minute stale time and 30‑minute garbage collection. Users navigating between pages almost never see a loading spinner.
-
Per‑request deduplication – Used
React.cache()for article fetches in server components, sogenerateMetadataand the page component share the same data without duplicate DB calls.
// Example in a Next.js page
export const revalidate = 300; // ISR: revalidate every 5 minutes
const results = await Promise.allSettled([
supabase.from('articles').select(),
supabase.from('comments').select(),
]);
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은 콘텐츠가 많은 사이트에 견고한 조합입니다.
🙏 Feedback Welcome
여러분의 의견을 듣고 싶습니다:
- What IT sources would you want to see added?
- Any UX improvements you’d suggest?
- Would you use something like this for your local tech ecosystem?
Thanks for reading! Drop a comment or visit to check it out.