Feeds tab: read RSS feeds grouped like Feedly, preview and add articles as Posts

未关闭
#230 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
12/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
活跃
技术栈
azure, csharp
领域
api, database, frontend

调研方向

This is a multi-part design feature, not a single fix. Start by reading the nav link in NavMenu.razor and the shared UI project NoteBookmark.SharedUI, then find ExtractPostDetailsAndSave(url) to see how the existing Search and QuickAdd flows save Posts. Scope the work by first agreeing the API surface for feeds, groups and item state in Azure Table with the maintainer. Done means the v1 list in the issue works end to end.

由索引模型根据 Issue 内容生成。

描述

enhancement ready-for-agent

This issue was written with an AI assistant from a design interview with @fboucher-os.

Summary

Add a Feeds tab to the web app that lists RSS/Atom feed items grouped in custom groups (Feedly-style). Clicking an item opens a preview popup where the article can be added as a Post, skipped, or opened in a new browser tab.

Scope (v1)

  • UI built in NoteBookmark.SharedUI; nav link added to the Blazor web app only (NavMenu.razor). MAUI later.
  • Feeds, groups and item state stored behind the API in Azure Table, so MAUI can adopt it without migration.

Feeds and groups

  • Each feed belongs to exactly one group.
  • "Manage feeds" panel: add a feed by feed URL or site URL (auto-discover <link rel="alternate">), create/rename/delete groups, move a feed between groups.
  • OPML import (e.g. Feedly export), creating groups from OPML outlines.

Fetching

  • On demand when the tab or a group opens; the API fetches feeds in parallel with a ~15 min cache. "Refresh" bypasses the cache.
  • 10 s timeout per feed. A failing feed shows a warning icon with the error as tooltip; other feeds load normally. No auto-removal.
  • No background worker in v1.

Layout

  • Left: "All", then groups with pending counts, expandable to their feeds.
  • Right: items newest first (title, feed name, age, one-line excerpt). Click opens the preview.
  • Hidden: items older than 30 days, items whose URL already exists as a Post, items marked Added or Skipped.

Preview popup (FluentUI dialog)

  • Feed-provided content: title, source, date, lead image, sanitized HTML body.
  • Buttons: Add, Skip, Close, Open original (real URL in a new browser tab).

Item state

  • Each item becomes Added or Skipped, tracked by URL; both remove it from the list (inbox model).
  • "Mark all as skipped" per group.
  • Skipped records older than 60 days are pruned.

Add behaviour

  • Reuse ExtractPostDetailsAndSave(url) (same as Search suggestions "+" and QuickAdd): saves an unread Post, shows a toast, closes the popup. Notes are written later from Posts as usual.

Out of scope for v1

  • MAUI app support, background polling, feeds in multiple groups, authenticated feeds, full-article extraction in the preview.
主要语言
C#
星标
13
派生
3
平均合并
12 小时 33 分钟
30 天内合并 PR
13

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

fboucher/NoteBookmark 的其他 Issue

查看 fboucher/NoteBookmark 的全部 Issue

相似的 Issue

更多 C# Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。