bonza The backend development engineers

NewsNow:优雅的实时新闻阅读平台

2026-02-12
来财
本文 2481 字,阅读全文约需 8 分钟

NewsNow 是一个优雅的实时新闻阅读平台,致力于为用户提供最佳的新闻浏览体验。该项目目前主要支持中文内容,未来将推出功能更完整、支持英文和多语言内容的版本。

核心特性

🎨 清澈优雅的界面设计

NewsNow 采用简洁现代的 UI 设计,专注于为用户提供最佳的阅读体验。界面干净整洁,没有多余的元素干扰,让用户能够专注于新闻内容本身。

⚡ 实时新闻更新

平台提供实时更新的热门新闻,确保用户能够第一时间了解最新的资讯动态。通过智能的内容抓取和更新机制,保持新闻内容的时效性。

🔐 GitHub OAuth 登录与数据同步

支持使用 GitHub 账号登录,方便快捷的同时实现数据同步功能。登录用户的个性化设置和阅读偏好能够在不同设备间保持一致。

🚀 智能缓存机制

  • 默认缓存时长:30分钟,平衡了内容新鲜度和系统性能
  • 强制刷新:登录用户可以强制刷新,获取最新内容
  • 自适应抓取间隔:根据源更新频率动态调整(最小2分钟),优化资源使用并防止 IP 封禁

🔧 MCP 服务器支持

NewsNow 提供了 MCP (Model Context Protocol) 服务器支持,方便集成到各种 AI 助手和工具链中:

{
  "mcpServers": {
    "newsnow": {
      "command": "npx",
      "args": ["-y", "newsnow-mcp-server"],
      "env": {
        "BASE_URL": "https://newsnow.busiyi.world"
      }
    }
  }
}

用户可以将 BASE_URL 更改为自己的域名,实现个性化的 MCP 服务部署。

部署方案

基础部署

对于不需要登录和缓存功能的简单部署:

  1. Fork 此仓库
  2. 导入到 Cloudflare Pages 或 Vercel 等平台
  3. 即可快速上线

Cloudflare Pages 配置

  • 构建命令pnpm run build
  • 输出目录dist/output/public

GitHub OAuth 设置

  1. 创建 GitHub App
  2. 无需特殊权限
  3. 设置回调 URL:https://your-domain.com/api/oauth/github(替换为实际域名)
  4. 获取 Client ID 和 Client Secret

环境变量配置

参考 example.env.server 文件,本地开发时重命名为 .env.server

# Github Client ID
G_CLIENT_ID=
# Github Client Secret  
G_CLIENT_SECRET=
# JWT Secret,通常与 Client Secret 相同
JWT_SECRET=
# 初始化数据库,首次运行必须设置为 true,之后可以关闭
INIT_TABLE=true
# 是否启用缓存
ENABLE_CACHE=true

数据库支持

支持 db0 的所有数据库连接器,推荐使用 Cloudflare D1 数据库:

  1. 在 Cloudflare Worker 控制台创建 D1 数据库
  2. wrangler.toml 中配置 database_iddatabase_name
  3. 如果 wrangler.toml 不存在,重命名 example.wrangler.toml 并修改配置
  4. 更改将在下次部署时生效

Docker 部署

在项目根目录运行:

docker compose up

也可以在 docker-compose.yml 中设置环境变量。

开发指南

环境要求

  • Node.js >= 20

开发流程

corepack enable
pnpm i
pnpm dev

添加数据源

参考 shared/sourcesserver/sources 目录。项目提供了完整的类型定义和清晰的架构设计。详细的添加数据源指南请参考 CONTRIBUTING.md

技术架构

前端技术栈

  • 现代前端框架:采用最新的前端技术,确保良好的用户体验
  • 响应式设计:适配各种设备屏幕尺寸
  • 性能优化:通过缓存和懒加载等技术提升性能

后端架构

  • 数据抓取引擎:智能抓取各种新闻源的内容
  • 缓存系统:多层缓存机制,平衡性能和实时性
  • API 设计:RESTful API 设计,便于集成和扩展

数据源管理

  • 模块化设计:每个数据源都是独立的模块,便于维护
  • 类型安全:完整的 TypeScript 类型定义
  • 扩展性强:易于添加新的数据源

发展路线图

即将推出的功能

  • 多语言支持:英文、中文以及更多语言版本
  • 个性化选项:基于分类的新闻推荐、保存用户偏好
  • 全球新闻源:扩展数据源以覆盖全球多语言新闻

长期规划

  • AI 推荐:基于用户行为的智能新闻推荐
  • 社交功能:新闻分享、评论等社交互动功能
  • 移动应用:原生移动应用开发

社区贡献

NewsNow 欢迎社区贡献!无论是提交 Pull Request 还是创建 Issue,都是对项目的重要支持。

贡献方式

  • 功能建议:通过 Issues 提出新功能想法
  • Bug 报告:发现问题时创建详细的 Bug 报告
  • 代码贡献:提交 Pull Request 贡献代码
  • 文档改进:帮助完善项目文档

特别贡献

项目特别欢迎新数据源的贡献。详细的贡献指南请参考 CONTRIBUTING.md,其中包含了添加新数据源的详细说明。

项目亮点

用户体验优先

  • 简洁界面:去除冗余元素,专注内容本身
  • 快速加载:优化的性能,确保快速响应
  • 智能缓存:平衡实时性和性能

开发者友好

  • 清晰架构:模块化设计,易于理解和扩展
  • 完整文档:详细的开发和部署文档
  • 类型安全:TypeScript 支持,减少运行时错误

部署灵活

  • 多种部署方式:支持 Vercel、Cloudflare Pages、Docker 等
  • 环境适配:支持多种数据库和部署环境
  • 配置简单:最小化配置,快速上手

许可证

NewsNow 采用 MIT 许可证 © ourongxing,允许自由使用、修改和分发。

总结

NewsNow 是一个设计优雅、功能实用的新闻阅读平台,特别适合追求简洁阅读体验的用户。无论是作为个人新闻阅读工具,还是作为学习现代 Web 开发的参考项目,都具有很高的价值。

随着项目的不断发展和社区贡献的积累,NewsNow 有望成为一个功能完善、支持多语言的全球新闻聚合平台。对于开发者来说,这是一个参与开源项目、学习现代 Web 开发技术的绝佳机会。

  • GitHub 仓库:https://github.com/ourongxing/newsnow
  • 在线演示:https://newsnow.busiyi.world
  • 许可证:MIT
原文地址 https://blog.bonza.cn/2026/02/12/newsnow/

Similar Posts

Comments