Skip to content

Epic: Blog reading and subscription #120

Description

@Adron

Summary

Blog is a documented product feature with its own help page (/help/blog) and a nav entry on the website. The app has no blog surface.

Endpoints (non-admin)

Method Path Purpose
POST /api/blog/subscribe {email} — double opt-in
GET /api/blog/subscribe/confirm public confirmation link from the email
GET /api/blog/unsubscribe human-facing unsubscribe link
POST /api/blog/unsubscribe RFC-8058 one-click unsubscribe target

Authoring lives under /api/admin/blog* and is out of scope (admin-only).

Priority note

Lowest priority in this parity effort: it is a read-and-subscribe surface that the OS browser already serves well. Filed because the user asked for every feature, with the explicit recommendation to consider the browser-handoff option below.

Repo conventions to follow

  • Service: one partial class InterlinedApiClient file per domain in InterlinedList/Services/.
  • Wire types in InterlinedList/Models/ matching real API JSON.
  • ViewModel per view in InterlinedList/ViewModels/ (CommunityToolkit.Mvvm ObservableObject + [RelayCommand]).
  • View is a self-contained UserControl in InterlinedList/Views/ that news up its own VM from AppServices.Session.
  • Strata tokens only — no colors/fonts/radii outside Resources/Palette.xaml + Theme.*.xaml.
  • Read-after-write for any mutating endpoint whose response envelope has not been live-verified.

Activity

  1. added
    epicFeature-area parent issue with sub-issues
    parityWeb/API feature-parity work
    P3Nice to have / low desktop value
    on Sep 15, 2026
  2. Adron commented on Sep 24, 2026

    @Adron
    MemberAuthor

    Both sub-issues closed — #121 and #122, shipped together in #172.

    Outcome: reading the blog is a browser handoff (no public read endpoint — /api/blog, /api/blog/posts, /api/blog/list all 404), and newsletter subscribe works while unsubscribe does not — both unsubscribe forms take only a ?token= that the email footer carries, so an app knowing just the address can't unsubscribe anyone. The panel says where the link lives instead of offering a broken control.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Nice to have / low desktop valuearea:blogArea: blogepicFeature-area parent issue with sub-issuesparityWeb/API feature-parity work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions