- 여러 기업/개발자 블로그를 찾아다니며 새 글을 확인하는 반복 작업이 번거로웠습니다.
- RSS를 지원하는 블로그가 많지만, 사용자 입장에선 “나에게 필요한 글만 묶어서 한 번에 받아보기”가 어렵습니다.
- 이메일은 가장 보편적이고 도달률이 높은 채널입니다. 구독자가 고른 블로그의 새 글만 매일 아침 묶어서 보내는 간단·확실한 경험을 목표로 했습니다.
- 블로그 선택 구독
src/data/blogs.json에 정의된 다양한 기술 블로그 중 원하는 블로그만 선택해 구독
- 일간 RSS 수집 및 필터링
- 매일 RSS를 크롤링해 KST(한국 표준시) 기준 “오늘 올라온 글”만 추려냄
- 이메일 발송
- 선택한 블로그의 오늘자 글만 모아 HTML 템플릿로 이메일 발송
- 간단한 구독 UI
- 메인 페이지에서 블로그 선택 + 이메일 입력만으로 구독 완료
- Frontend: Next.js(App Router), React 19, Tailwind CSS
- Backend: Next.js API Route
- DB: Supabase(PostgreSQL)
- Cron: Vercel Cron
- Email: Resend
- RSS: rss-parser
- 사용자는
SubscribeForm에서 이메일과 구독할 블로그를 제출 - 구독 정보는 Supabase의
subscribers테이블에 저장 - Vercel Cron이 매일 정해진 시간에
/api/cron/check-rss실행 - RSS 크롤링 후 금일 게시글만 필터 → 구독자별 관심 블로그에 맞게 매칭 → 이메일 발송
- 구독 폼:
src/app/_components/SubscribeForm/index.tsx- Supabase upsert로
subscribers에 이메일/선택 블로그 저장
- Supabase upsert로
- RSS 크롤링:
src/app/api/cron/check-rss/_utils/articles.tsrss-parser로 피드 수집 → 금일 게시물만 필터(KST 기준)
- 이메일 발송:
src/lib/email.ts, 템플릿src/app/api/cron/check-rss/_components/EmailTemplate.tsx - Cron 엔드포인트:
src/app/api/cron/check-rss/route.ts(GET)
vercel.json
{
"$schema": "https://openapi.vercel.sh/vercel.json",
"crons": [{ "path": "/api/cron/check-rss", "schedule": "0 22 * * *" }]
}- 매일 22:00 UTC 실행 (KST 기준 익일 오전 7시)
로컬에서 수동 실행(개발 중 확인 용도):
- 브라우저/HTTP 클라이언트로
GET http://localhost:3000/api/cron/check-rss
