Skip to content

Blog: decide between an in-app reader and a browser handoff #121

Description

@Adron

Decision needed before building

The four public /api/blog/* endpoints are subscription management only — subscribe, confirm, unsubscribe. There is no public post-listing or post-content endpoint outside /api/admin/blog*, which is admin-only and cookie-authed.

So an in-app blog reader has no API to read from. Two honest options:

  1. Browser handoff (recommended) — a "Blog" entry that opens https://interlinedlist.com/blog in the OS browser, exactly like the existing OAuth and "Manage account on the web" handoffs.
  2. Wait for a public read endpoint and revisit.

Acceptance criteria

  • Confirm there is no public blog-read endpoint (re-check the live spec at build time).
  • Implement the browser handoff, or record the decision to defer.
  • Do not scrape the website's HTML as a substitute for an API.

Activity

  1. added
    parityWeb/API feature-parity work
    P3Nice to have / low desktop value
    on Sep 15, 2026
  2. Adron commented on Sep 16, 2026

    @Adron
    MemberAuthor

    Implemented in #172 — work continues in the PR from here. Shipped together because #121 is the decision that determines what #122 can be.

    #121: browser handoff. No public blog-read endpoint — /api/blog, /api/blog/posts and /api/blog/list all 404, and the only other blog routes are admin-only cookieAuth. Nothing to render in-app.

    #122: subscribe works; unsubscribe does not. Both GET and POST /api/blog/unsubscribe take only a ?token= from the email footer, so an app knowing just the address cannot unsubscribe anyone. The panel says where the link lives instead of offering a control that can't work. Subscribe is double opt-in and the UI says so explicitly.

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: blogparityWeb/API feature-parity work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions