Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Indexer app sync provisioning UI

  • Status: Accepted
  • Date: 2026-03-21
  • Motivation:
    • ERD_INDEXERS_CHECKLIST.md still had the app-sync UX gap open even though the stored-procedure-backed search-profile and Torznab APIs already existed.
    • Operators could create the pieces manually, but there was no single workflow to provision an app-facing sync path with tag scoping, explicit indexer allowlists, media-domain filtering, and issued Torznab credentials.
  • Design notes:
    • Extend /indexers with an App sync card that reuses the existing search-profile and Torznab fields instead of introducing a new route or duplicate form state.
    • Add a UI helper that reuses or creates a search profile, applies domain/indexer/tag scoping through the existing ERD-backed endpoints, then creates a Torznab instance and returns the plaintext API key for the downstream app.
    • Persist the generated search-profile UUID and Torznab UUID back into the draft state so follow-up operations stay anchored to the provisioned app path.
  • Test coverage summary:
    • Updated the /indexers Playwright smoke test to assert the app-sync heading and provisioning button render.
    • Full regression gates remain just ci and just ui-e2e.
  • Observability updates:
    • No backend telemetry changes were required because the workflow composes existing traced endpoints.
    • The UI appends the provisioned app-sync summary to the existing activity log so operators can recover issued identifiers from the current session.
  • Risk & rollback plan:
    • Risk is limited to client-side orchestration of already-supported API calls.
    • Rollback is a straightforward revert of the UI helper and summary card, leaving the underlying search-profile and Torznab APIs unchanged.
  • Dependency rationale:
    • No new dependencies were added.
    • Alternatives considered: a dedicated backend orchestration endpoint or a separate app-sync route. Both were rejected because the current ERD-backed APIs already provide the needed primitives and the admin console is the established operator surface.