Two-tab personalized news website with article recommendations, video recommendations, and a quick left-leaning or right-leaning indicator for each item.
- React + Vite app
- News Recommendation System tab
- Video News Recommendation tab
- Topic, political lens, and pace preferences
- Live API support for GNews and YouTube Data API
- GitHub JSON dataset support for combining a premade repo into the site
- Automatic fallback data when no API key is set
- Install dependencies:
npm install- Copy
.env.exampleto.envand fill values if you want live data:
copy .env.example .env- Start the app:
npm run devVITE_GNEWS_API_KEY: GNews API key for article newsVITE_YOUTUBE_API_KEY: YouTube Data API key for video newsVITE_GITHUB_NEWS_JSON_URL: raw GitHub JSON URL for article itemsVITE_GITHUB_VIDEOS_JSON_URL: raw GitHub JSON URL for video items
If you already have a premade GitHub repo with news/video JSON, convert the raw files into arrays.
[
{
"title": "Sample headline",
"source": "Example News",
"topic": "Technology",
"leaning": "left",
"pace": "analysis",
"summary": "Short description",
"link": "https://example.com/story",
"type": "Imported Article",
"publishedAt": "2026-03-18T08:00:00Z"
}
][
{
"title": "Sample video",
"channel": "Example Channel",
"topic": "Politics",
"leaning": "right",
"pace": "breaking",
"summary": "Short description",
"link": "https://youtube.com/watch?v=abc123",
"type": "Imported Video",
"duration": "10 min",
"publishedAt": "2026-03-18T08:00:00Z"
}
]If topic, leaning, or pace are missing, the app infers them from the title, source, and summary.
- For a production app, move API calls to a backend so keys are not exposed in the browser.
- The left/right label is a heuristic marker, not a definitive political fact checker.