무료 실시간 금융 뉴스 터미널을 만들었습니다. 여기 기술 스택이 있습니다.

작성자

카테고리:

← 피드로
DEV Community · casino guy · 2026-07-12 개발(SW)

casino guy

Bloomberg Terminal costs $24,000/year.

I built the same thing for free. Here’s how.

The problem

Every trader needs real-time financial news.
But professional terminals cost between $2,000 and $24,000
per year. That’s insane for an indie developer or
retail trader.

So I built https://flowfeed.cc/ — a free real-time news terminal
that pulls from 24+ sources simultaneously.

The stack

  • Frontend: React + TanStack Query
  • Backend: Supabase (PostgreSQL + Edge Functions on Deno)
  • Builder: Lovable (AI-powered React builder)
  • Payments: Whop
  • Analytics: Taap.it

The news pipeline

This was the hardest part to get right.

The feed pulls from two types of sources:

RSS feeds (7 sources)

  • CNBC, MarketWatch, Yahoo Finance, Investing.com
  • CoinDesk, The Block, ZeroHedge

Telegram channels (9 channels)
Using the public preview endpoint t.me/s/{channel}
no API key required. Telegram channels like WatcherGuru
and WalterBloomberg often break news 30-60 seconds
before mainstream media.

Each article goes through a pipeline:

  1. Fetch — server-side via Supabase Edge Functions (avoids CORS issues)
  2. Strip HTML — custom entity decoder handles double-encoded HTML from ZeroHedge and others
  3. Quality filter — exclusion-only logic, removes lifestyle/non-financial content
  4. Dedup — URL-based deduplication (strips UTM params before comparing)
  5. Near-dup — catches same story posted on both Telegram and RSS within 5 minutes
  6. 72h cutoff — Breaking tab shows last 3 days
  7. Auto-refresh — client polls every 30 seconds with React Query

The pipeline went from returning ~34 articles
to ~250 articles after fixing these stages.

The biggest lesson

The health dashboard showed all sources as “operational”
but the feed was nearly empty. Turned out the 24h
Breaking cutoff was dropping 75% of valid articles.

Always log your pipeline stage by stage:

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다