这个项目能做什么
GeeksPulse 是一个开源的开发者新闻聚合器,从大约 50 个精选的 RSS 和 Atom 源中收集文章,并将它们呈现在一个快速、统一的界面中。该项目自称无广告、无付费墙、无广告追踪器,由一位独立开发者构建和维护。
工作原理
一个 Node.js 构建管道(scripts/build-feed.mjs 以及 scripts/lib/ 下的模块)获取并规范化配置的源,然后将静态 JSON 缓存写入 public/。前端是纯 HTML、CSS 和原生 JavaScript ES 模块,因此该网站可以作为静态文件提供服务,无需应用服务器。GitHub Actions 工作流按计划(文档记录为每 30 分钟)运行源构建,以保持缓存最新。如果预构建的源文件缺失或为空,应用会通过 CORS 代理在浏览器中直接获取源;README 将此描述为紧急路径,而非正常加载路径。
内容和类别
源列在 data/feeds.json 中,并分为 11 个类别:通用、安全、AI/机器学习、Python、JavaScript、Java、DevOps、开源、Rust、Go 和架构。命名来源包括 Hacker News、Lobsters、Ars Technica、The Register、IEEE Spectrum、Krebs on Security、Bleeping Computer、Google AI Blog、Planet Python、JavaScript Weekly、Docker 和 Kubernetes 博客、LWN.net、Rust Blog、Go Blog、Martin Fowler、Netflix Tech Blog 和 Cloudflare Blog 等。添加源意味着编辑 data/feeds.json 并重新生成缓存。
功能
- 网格和列表布局,偏好存储在 localStorage 中
- 可配置的自动刷新间隔,从 1 分钟到 1 小时
- 按需 AI 摘要,使用预缓存片段或本地 Ollama 回退
- 本地保存的书签,以及卡片上的预计阅读时间
- 键盘快捷键:/ 搜索,j/k 导航,o 打开,r 刷新,Esc 清除
- 源健康面板,显示上次更新时间以及在线/失败源计数
- 骨架加载器,通过 Web Share API 分享,并带有剪贴板回退
- 可访问性工作:ARIA 角色和标签、键盘导航、prefers-reduced-motion 支持
- 赛博朋克深色主题,带有霓虹点缀、故障和扫描线动画
构建输出包括 public/feed.json(最多 300 篇去重文章,按最新优先排序)、public/feed-health.json、public/version.json、仅首页的 sitemap.xml,以及注入到 index.html 中的 SEO 回退文章。
测试和工具
仓库记录了分层测试套件:Vitest 单元、集成和 DOM 测试(报告为 171 个测试),以及针对 Chromium 的 Playwright 端到端冒烟测试(10 个测试),使用 happy-dom 进行浏览器端测试,并设置 V8 覆盖率阈值。CI 管道先运行测试,然后是构建和部署作业,最后是端到端测试;失败的单元或集成测试会阻塞管道。开发使用 Vite 6 作为开发服务器和生产打包器,fast-xml-parser 和 ollama 作为构建时依赖。
隐私和支持
README 声明该网站使用 Google Analytics 获取基本流量洞察,但没有广告追踪器,不出售用户数据或个性化广告。该项目通过 issue 和 pull request 接受贡献,并提供可选的 PayPal 支持链接。
评论
0 评分人数达到10人后显示
登录后参与讨论。