Announcements (site news)
Public news is loaded from the backend (announcements_list / announcement_get), not from bundled news.json.
Key files
| File | Role |
|---|---|
loadNews.js |
Bell bootstrap: windowed announcements_list (no attachment presign) |
announcementApi.js |
Open API client |
AnnouncementArticle.js |
Single post on /news |
News.js |
News page |
useAnnouncementUnread.js |
Server cursor announcementsLastReadAt + bell synthetic rows |
AnnouncementReactions.js |
Reaction chips on /news |
Backend: Announcements.
Admin composer
| Route | Purpose |
|---|---|
/announcements/admin |
Draft/published list (admin only) |
/announcements/admin/new |
New draft editor |
/announcements/admin/:id |
Edit draft or published post |
Publish is disabled unless VITE_REAL_MODE=production (matches backend dev publish guard).
Images
Markdown may use ap-att:{s3Key}; the client resolves keys to presigned URLs via announcement_get during bootstrap enrichment.