Skip to content

feat(blog): add a JSON feed for the app news tab - #9

Merged
pcodedynamics merged 1 commit into
mainfrom
feat/blog-json-feed
Oct 15, 2026
Merged

pcodedynamics merged 1 commit into
mainfrom
feat/blog-json-feed

Conversation

@pcodedynamics

Copy link
Copy Markdown
Member

Vấn đề

App iOS sắp có tab Tin tức đọc danh sách bài viết của blog. Website chưa có feed nào (RSS hay JSON), nên app không có nguồn dữ liệu ổn định để đọc.

Thay đổi

  • Feed mới /blog/feed.json theo chuẩn JSON Feed 1.1, sinh lúc build từ collection blog. Mỗi bài có id, url (có dấu / cuối vì trailingSlash: 'always'), title, summary, date_published, date_modified nếu có, và tags. Bài nháp bị loại.
  • src/lib/blog.ts: gom phần lọc nháp và sắp xếp mới nhất trước thành getPublishedPosts(), dùng chung cho trang /blog/, trang bài viết và feed.
  • BaseLayout.astro: thêm <link rel="alternate" type="application/feed+json"> để trình đọc RSS tự tìm thấy feed.
  • nginx.conf: file .json dùng chung rule cache 1 giờ với .xml và .txt, để bài mới hiện trong app nhanh.
  • Chính sách quyền riêng tư: thêm mục "Tin tức trong ứng dụng". App chỉ tải danh sách bài viết công khai khi người dùng mở tab Tin tức, không kèm mã nhận dạng, cookie hay nội dung gõ. Bàn phím không tham gia. Ngày cập nhật đổi thành 15/10/2026.

Kiểm thử

  • pnpm build: dist/blog/feed.json có 11 bài (bài nháp welcome bị loại), URL đúng dạng https://funput.app/blog/<id>/.
  • pnpm check (0 lỗi) và pnpm format:check: pass.
  • Chưa kiểm tra sau deploy: cần curl -I https://funput.app/blog/feed.json để xác nhận nginx trả application/json và header cache.

Thứ tự merge

Cần merge và deploy PR này trước khi phát hành tab Tin tức của app iOS (Funput/Funput, nhánh feat/ios-news-tab). Nếu chưa có feed, tab đó sẽ báo không tải được bài.

🤖 Generated with Claude Code

Adds /blog/feed.json (JSON Feed 1.1) built from the published posts, a
feed autodiscovery link, a one-hour cache rule for it, and a privacy
policy note on what the app's news tab fetches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant