30개 이상 IT 뉴스 소스를 모아주는 플랫폼을 만들었습니다, 그래서 모두 확인할 필요가 없습니다

발행: (2026년 4월 2일 AM 09:54 GMT+9)
5 분 소요
원문: Dev.to

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 기술 비디오가 글 기사와 함께 수집됩니다. 기분에 따라 읽기와 시청을 전환하세요.

💬 커뮤니티 기능

기사에 댓글을 달고, 좋아하는 글에 좋아요를 누르고, 다른 개발자와 토론에 참여하세요.

📧 뉴스레터

주간 다이제스트를 구독하고 최고의 기사를 받은편지함으로 받아보세요.

🛠️ 기술 스택

레이어기술
FrameworkNext.js 15 (App Router, Turbopack)
LanguageTypeScript
DatabaseSupabase (PostgreSQL + RLS)
AuthSupabase Auth
StateTanStack Query + Zustand
StylingTailwind CSS + Shadcn UI
DeploymentVercel
AnalyticsVercel Analytics

📐 아키텍처 하이라이트

  • Server‑side rendering with caching – Article pages use revalidate = 300 for ISR. API routes return s‑maxage=300, stale‑while‑revalidate=600 headers, giving fast initial loads without hitting the DB every time.

  • Parallel data fetching – Article detail pages fire multiple Supabase queries with Promise.allSettled instead 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, so generateMetadata and 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;
});

📸 스크린샷

HanunIT screenshot

🤷 내가 배운 것

  • 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.

0 조회
Back to Blog

관련 글

더 보기 »

Scotty: 아름다운 SSH 태스크 러너

우리는 방금 아름다운 SSH 작업 실행기인 Scotty(https://github.com/spatie/scotty)를 출시했습니다. 이를 통해 배포 스크립트 및 기타 원격 작업을 정의하고, yo…