Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

484 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LatestNews

LatestNews logo

更干净地阅读实时热点,聚合你真正关心的新闻源。

在线体验 · 贡献指南 · 反馈问题

项目简介

LatestNews 是一个以中文资讯聚合为核心的实时阅读应用,提供更轻量的页面结构、更明确的个性化布局,以及适合长期维护的数据源治理能力。项目基于 React、Vite 和 Nitro 构建,前后端同仓,既可以部署为 Web/PWA,也支持 Docker 部署。

当前版本重点关注以下方向:

  • 实时热点与高频新闻源的稳定聚合
  • 基于 GitHub 登录的布局同步
  • 面向移动端的 PWA 使用体验
  • 数据源健康监控与抓取质量治理

当前能力

  • 实时拉取并聚合多类中文热点与资讯源
  • 自定义首页栏目布局,并支持一键重置
  • GitHub 登录后自动同步用户布局配置
  • 支持手动同步、同步状态提示和失败重试
  • 提供数据源健康页,可查看异常源、错误信息和单源探测结果
  • 提供 v1 只读 API、节点清单、JSON Feed/RSS 和诊断导出,便于外部工具接入
  • 支持安装为 PWA,并提供离线与更新反馈
  • 支持缓存、限频抓取与登录用户强制刷新
  • 支持通过 https://sync.likanug.app 和 LatestNews API Key 同步阅读历史、收藏与偏好,也可覆盖服务地址接入自建 SyncHub

技术栈

  • 前端:React 18、Vite 7、TanStack Router、TanStack Query、Jotai、UnoCSS
  • 服务端:Nitro、H3、better-sqlite3、db0
  • 抓取与解析:Cheerio、ofetch、fast-xml-parser
  • 工程化:TypeScript、ESLint、Vitest、Commitlint、GitHub Actions

快速开始

环境要求

  • Node.js 22+
  • pnpm 10+

本地开发

pnpm install
pnpm dev

默认会在启动前执行资源预处理脚本。如果你需要完整的登录和同步能力,请同时配置服务端环境变量。

环境变量

可参考 example.env.server 进行配置:

TZ=Asia/Shanghai
VITE_APP_TITLE=LatestNews
VITE_API_URL=http://localhost:8000
JWT_SECRET=
ENABLE_CACHE=true
INIT_TABLE=true
LATESTNEWS_NODE_ID=
LATESTNEWS_UPSTREAM_ENDPOINT=
LATESTNEWS_DOWNSTREAM_ENDPOINT=
PRODUCTHUNT_API_TOKEN=

变量说明:

  • VITE_APP_TITLE:浏览器标题和页面展示名称
  • VITE_API_URL:登录与用户同步相关 API 地址
  • JWT_SECRET:与登录服务保持一致的 JWT 密钥
  • ENABLE_CACHE:是否启用服务端缓存
  • INIT_TABLE:首次初始化数据库时设置为 true
  • LATESTNEWS_NODE_ID:可选的节点标识,用于 /api/v1/node
  • LATESTNEWS_UPSTREAM_ENDPOINT:可选的上游节点地址,用于节点清单
  • LATESTNEWS_DOWNSTREAM_ENDPOINT:可选的下游接入地址,用于节点清单

如果未配置 VITE_API_URLJWT_SECRET,应用仍可运行,但不会显示登录与同步能力。

API 与外部接入

LatestNews 提供面向自动化工具、订阅器和下游采集节点的只读 v1 API。建议外部系统先请求 /api/v1/node 获取节点标识、版本、公开端点、数据源清单和健康摘要;如需机器可读契约,可请求 /api/v1/openapi.json

详细接口、筛选参数和诊断导出说明见 API v1 文档

部署

更完整的部署路径、环境变量、健康检查和排障说明见 部署运维文档

Cloudflare Pages

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

如果需要缓存与数据库能力:

  1. 创建 D1 数据库
  2. 复制并修改 example.wrangler.toml
  3. 配置 database_iddatabase_name
  4. 重新部署

Docker

项目根目录已提供 Dockerfile 和 Compose 配置:

docker compose -f docker-compose.yml up -d

如需本地联调,可使用 docker-compose.local.yml

常用脚本

命令 说明
pnpm dev 本地开发
pnpm build 生产构建
pnpm brand:assets 根据 SVG 生成 favicon、PWA 图标和分享图
pnpm preview 本地预览 Pages 构建结果
pnpm check 执行 lint、typecheck 和 test
pnpm typecheck 运行 TypeScript 检查
pnpm test 运行 Vitest
pnpm deploy 部署到 Cloudflare Pages

项目结构

  • src:前端页面、组件、状态和 hooks
  • server:Nitro API、抓取逻辑、数据库与中间件
  • shared:前后端共享常量、类型和数据源定义
  • docs:API、部署和外部接入文档
  • scripts:资源预处理和数据源辅助脚本
  • public:静态资源、图标和 PWA 相关文件

路线方向

  • 继续提升同步状态和多端体验
  • 持续完善数据源健康治理和排障效率
  • 优化移动端阅读、离线缓存和安装体验
  • 逐步扩展高质量数据源与分类能力

致谢

项目最初参考了 ourongxing/newsnow 的思路,并在此基础上按当前维护方向继续演进。

贡献

欢迎通过 issue 或 pull request 参与改进。提交前请先阅读 CONTRIBUTING.md,并遵循当前仓库的 Conventional Commits 规范。

License

MIT

About

一个实时的新闻聚合web app

Topics

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages