Skip to content

[FE-12] Build Developers settings — API keys and webhooks management UI #1100

Description

@yusuftomilola

Overview

API keys ([BE-24]) and webhooks ([BE-25]) need their admin UI — the "Developers" section of settings that every integratable platform has.

What to Build

A /settings/developers section (tab within the existing settings page or its own route):

  • API keys panel: list (name, prefix, last used, status); create modal (name, optional expiry, scopes) showing the full key once with copy-to-clipboard and an explicit "you won't see this again" notice; revoke with confirm-dialog
  • Webhooks panel: list subscriptions (URL, events, active, recent delivery status); create/edit modal (URL, event multi-select, generated signing secret shown once); enable/disable toggle; "send test" button surfacing the response code; per-subscription recent-deliveries drawer (timestamp, event, status, attempt)
  • ADMIN-only section

Conventions to Follow

  • API calls: add a typed client in frontend/lib/api/ (see frontend/lib/api/assets.ts for the pattern) — never call axios directly from components
  • Data fetching: TanStack Query hooks in frontend/lib/query/hooks/ with keys registered in frontend/lib/query/keys.ts
  • UI: reuse frontend/components/ui/ (button, input, confirm-dialog, toast) and the badge/modal patterns in frontend/components/assets/
  • Route goes under frontend/app/(dashboard)/ and gets a sidebar entry in frontend/components/layout/sidebar.tsx
  • Forms: React Hook Form + Zod resolver, matching the existing create-asset modal

References

  • Blocked by [BE-24], [BE-25]
  • Existing settings page to extend: frontend/app/(dashboard)/settings/page.tsx

Acceptance Criteria

  • Key shown exactly once with working copy button; list shows prefix only afterwards
  • Webhook CRUD + test delivery round-trip works
  • Delivery history readable per subscription
  • Section hidden from non-admins

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions