A unified news feed aggregating content from multiple sources into a clean, HackerNews-style interface.
- HackerNews — Top 10 most upvoted stories (last 24h)
- Show HN — Top 10 most upvoted Show HN posts (last 24h)
- Product Hunt — Top 10 products of the day
- Hype — Top news from hype.replicate.dev
- Substack — Latest posts from configured Substack feeds (last 24h)
- Telegram Channels — Posts from selected Russian tech/ML channels
- HN Best Comments — Quality comments from HackerNews discussions
- @data_secrets
- @gonzo_ML
- @seeallochnaya
- @denissexy
- @NeuralShit
- @cryptoEssay
- @sergiobulaev
- @blognot
- @addmeto
- 🔄 Auto-updates every 30 minutes
- 🏷️ Filter by source type
- 🌙 Dark mode support
- 📱 Responsive design
- ⚡ Fast, lightweight frontend
- Backend: Node.js + TypeScript + Express
- Frontend: Vanilla HTML/CSS/JS
- Scheduling: node-cron
- Scraping: axios + cheerio
# Install dependencies
npm install
# Run in development mode (with hot reload)
npm run dev
# Build for production
npm run build
# Start production server
npm startThe app will be available at http://localhost:3000
GET /api/feed— Get all feed itemsGET /api/feed?source=hackernews— Filter by sourcePOST /api/refresh— Manually trigger feed refreshGET /health— Health check endpoint
hackernewsshowhnproducthunttelegramhypehn-commentssubstack
- Push code to GitHub
- Create new project on Railway
- Connect your GitHub repository
- Railway will auto-detect and deploy
The app includes railway.json configuration for optimal deployment.
| Variable | Description | Default |
|---|---|---|
PORT |
Server port | 3000 |
SUBSTACK_FEEDS |
Comma or newline separated Substack URLs (newsletter or feed URLs) | https://www.lennysnewsletter.com/feed |
src/
├── server.ts # Express server + cron scheduling
├── aggregator.ts # Feed aggregation logic
├── types.ts # TypeScript interfaces
└── fetchers/ # Data source fetchers
├── hackernews.ts # HN API integration
├── hn-comments.ts # HN Algolia API for comments
├── producthunt.ts # ProductHunt scraper
├── telegram.ts # Telegram public channel scraper
└── hype.ts # Hype scraper
public/
├── index.html # Main page
├── styles.css # Styling
└── app.js # Frontend JavaScript
- Telegram channels are scraped from public preview pages (
t.me/s/channel) - ProductHunt uses web scraping as their API requires OAuth
- HN Best Comments uses the Algolia HN Search API for better discovery
- The feed caches in memory and persists across requests
MIT