NewsNow is an open-source news reader designed for elegant, distraction-free consumption of real-time and trending news. Built with TypeScript, it combines a clean UI with intelligent data fetching—adapting scraping intervals to source update frequency to prevent IP bans and reduce resource usage. Currently focused on Chinese news content, it supports GitHub OAuth for user authentication and data synchronization, with caching and database integration for improved performance. The app is ideal for developers and tech-savvy users seeking a customizable, self-hostable news experience without third-party dependency.
It’s designed for users who value control over their news feed, preferring a lightweight, transparent system over commercial aggregators. With support for Docker, Cloudflare Pages, and extensible data sources via modular architecture, it’s a practical choice for those who want to host their own personalized news hub without heavy infrastructure requirements.
What You Get
- Clean, elegant UI design - A minimalist interface optimized for reading comfort with no ads or clutter, focusing purely on content presentation.
- Real-time news updates - Aggregates headlines from multiple sources with adaptive scraping intervals (minimum 2 minutes) to balance freshness and resource efficiency.
- GitHub OAuth login - Enables user authentication with no special permissions required, allowing personalized reading experiences and data sync across devices.
- 30-minute default cache with force refresh - Reduces server load and improves response times; logged-in users can manually override cache to get latest content.
- Adaptive scraping interval - Dynamically adjusts scrape frequency based on source update patterns to avoid rate limits and optimize bandwidth usage.
- MCP server support - Configurable via JSON for external microservice communication; example includes running ‘npx -y newsnow-mcp-server’ with customizable BASE_URL.
- Cloudflare D1 database integration - Recommended for persistent storage; easily configured via wrangler.toml with database_id and database_name settings.
- Extensible data sources - Modular architecture in shared/sources and server/sources directories with full TypeScript type definitions for easy source addition.
Common Use Cases
- Building a personal news dashboard for Chinese-language content - Users in China or Mandarin-speaking regions use NewsNow to aggregate trending news from local sources with a clean interface, avoiding ad-heavy platforms.
- Creating a self-hosted news aggregator for teams - DevOps and tech teams deploy NewsNow internally to monitor industry-relevant news without relying on external services like Google News or Flipboard.
- Problem: Excessive API calls to news sources → Solution: Adaptive scraping - NewsNow prevents IP bans by dynamically adjusting how often it fetches from slow- or fast-updating sources, reducing unnecessary requests.
- Team workflow: Developers deploying to Cloudflare Pages with GitHub auth - A developer forks NewsNow, configures OAuth via GitHub App settings, deploys to Cloudflare Pages with D1 database, and enables caching for a low-latency personal news feed.
Under The Hood
NewsNow is a modern, monolithic web application built with TypeScript that aggregates news from hundreds of sources using a flexible, modular architecture. It combines real-time data fetching with intelligent caching and a component-based UI to deliver a scalable news platform.
Architecture
NewsNow follows a layered architecture that cleanly separates frontend and backend concerns, enabling clear division of responsibilities across server-side logic, database operations, and client rendering.
- The application adopts a component-based UI design with atomic state management for efficient updates
- Modular source handling allows support for diverse news providers and flexible content parsing
- Server-side rendering capabilities are enabled through Nitro, supporting deployment across multiple platforms
Tech Stack
The project leverages modern tools and frameworks to build a performant, extensible news aggregation platform.
- Built with TypeScript and React, using Vite for fast development and Nitro for server-side rendering
- Integrates with better-sqlite3 and cloudflare-d1 for flexible data storage options
- Employs tools like Unocss, tsx, and simple-git-hooks to enhance developer experience and code quality
- Vitest and ESLint are used for testing and linting, ensuring maintainable and type-safe code
Code Quality
NewsNow demonstrates a balanced level of code quality with consistent practices and some room for improvement.
- The test suite includes unit and integration tests covering key utility functions and date parsing logic
- Error handling is well-implemented with widespread use of try/catch blocks in server-side logic
- Code follows TypeScript and React conventions, though some naming inconsistencies affect long-term maintainability
- Dynamic imports and external dependencies indicate technical debt that may complicate future enhancements
What Makes It Unique
NewsNow distinguishes itself through its extensible architecture and innovative approach to news aggregation.
- Features a column-based UI that enables customizable content layouts for users
- Supports hundreds of news sources through modular source management and intelligent caching
- Combines real-time data fetching with flexible deployment options across serverless platforms