ourongxing

    ourongxing/newsnow

    #294 this week

    Elegant reading of real-time and hottest news

    web
    elegant
    news
    TypeScript
    MIT
    21.5K stars
    5.9K forks
    21.5K GitHub watchers
    Updated 8/31/2026
    View on GitHub

    Build with Backblaze B2

    SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.

    Explore Backblaze Labs

    Loading star history...

    Use Cases & Benefits

    • Provides an elegant UI for real-time reading of trending news with adaptive update intervals and GitHub OAuth login.
    • Optimizes resource usage and prevents IP bans by adjusting scraping frequency based on source update rates.
    • Use for building a personalized news reading app with real-time updates and user data synchronization via GitHub OAuth.
    • Use for deploying a lightweight news aggregation service on platforms like Cloudflare Pages or Vercel with minimal setup.
    • Use for extending news sources and adding multi-language support in a modular TypeScript architecture.

    About newsnow

    English | 简体中文 | 日本語

    [!NOTE] This is a demo version currently supporting Chinese only. A full-featured version with better customization and English content support will be released later.

    Elegant reading of real-time and hottest news

    Features

    • Clean and elegant UI design for optimal reading experience
    • Real-time updates on trending news
    • GitHub OAuth login with data synchronization
    • 30-minute default cache duration (logged-in users can force refresh)
    • Adaptive scraping interval (minimum 2 minutes) based on source update frequency to optimize resource usage and prevent IP bans
    • support MCP server
    {
      "mcpServers": {
        "newsnow": {
          "command": "npx",
          "args": [
            "-y",
            "newsnow-mcp-server"
          ],
          "env": {
            "BASE_URL": "https://newsnow.busiyi.world"
          }
        }
      }
    }
    

    You can change the BASE_URL to your own domain.

    Deployment

    Basic Deployment

    For deployments without login and caching:

    1. Fork this repository
    2. Import to platforms like Cloudflare Page or Vercel

    Cloudflare Page Configuration

    • Build command: pnpm run build
    • Output directory: dist/output/public

    GitHub OAuth Setup

    1. Create a GitHub App
    2. No special permissions required
    3. Set callback URL to: https://your-domain.com/api/oauth/github (replace your-domain with your actual domain)
    4. Obtain Client ID and Client Secret

    Environment Variables

    Refer to example.env.server. For local development, rename it to .env.server and configure:

    # Github Client ID
    G_CLIENT_ID=
    # Github Client Secret
    G_CLIENT_SECRET=
    # JWT Secret, usually the same as Client Secret
    JWT_SECRET=
    # Initialize database, must be set to true on first run, can be turned off afterward
    INIT_TABLE=true
    # Whether to enable cache
    ENABLE_CACHE=true
    

    Database Support

    Supported database connectors: https://db0.unjs.io/connectors Cloudflare D1 Database is recommended.

    1. Create D1 database in Cloudflare Worker dashboard
    2. Configure database_id and database_name in wrangler.toml
    3. If wrangler.toml doesn't exist, rename example.wrangler.toml and modify configurations
    4. Changes will take effect on next deployment

    Docker Deployment

    In project root directory:

    docker compose up
    

    You can also set Environment Variables in docker-compose.yml.

    Development

    [!Note] Requires Node.js >= 20

    corepack enable
    pnpm i
    pnpm dev
    

    Adding Data Sources

    Refer to shared/sources and server/sources directories. The project provides complete type definitions and a clean architecture.

    For detailed instructions on how to add new sources, see CONTRIBUTING.md.

    Roadmap

    • Add multi-language support (English, Chinese, more to come).
    • Improve personalization options (category-based news, saved preferences).
    • Expand data sources to cover global news in multiple languages.

    release when ready

    Contributing

    Contributions are welcome! Feel free to submit pull requests or create issues for feature requests and bug reports.

    See CONTRIBUTING.md for detailed guidelines on how to contribute, especially for adding new data sources.

    License

    MIT © ourongxing

    Discover Repositories

    Search across tracked repositories by name or description