Return to Portfolio

Signalboard

Signalboard is a headless-ready feature-voting, feedback, and product-roadmap plugin for WordPress. It collects feature requests, lets visitors upvote them, and publishes a public roadmap — exposed over both the WordPress REST API and WPGraphQL, so it works equally well inside a classic theme or as the backend for a headless frontend.

Upvoting is open to anonymous visitors, deduplicated per-visitor and rate-limited per-IP to control abuse; submitting a new request requires a logged-in user and enters a pending state. A self-contained JWT register/login/refresh flow lets a headless frontend authenticate with no companion plugin, while core Application Passwords and cookie auth keep working for machine and admin access. A native admin moderation queue approves, rejects, or trashes submissions and sets roadmap statuses, all capability-guarded and nonce-protected.

The design goal behind it is a single source of truth behind every delivery surface: an immutable FeedbackRequest read model sits behind the REST controller, the WPGraphQL resolvers, and the editor block, so the three surfaces read identical data and can never drift apart — a bug fixed in the domain is fixed everywhere at once. Authorization is centralized the same way: one AuthorizationPolicy answers can_upvote, can_submit, and can_moderate, and both the REST permission callbacks and the GraphQL mutations delegate to it rather than duplicating rules. When a moderator changes a request’s status, a WebhookDispatcher signs the payload with HMAC-SHA256 over the raw JSON body and POSTs it, so a headless frontend can verify the signature and revalidate the affected pages on demand instead of waiting out an ISR interval.

The REST backbone has zero third-party runtime dependencies; the WPGraphQL layer activates automatically only when WPGraphQL is installed, so the plugin is fully functional either way. Interactive rendering on the frontend uses the Interactivity API. A Next.js 15 (App Router) reference frontend consumes the GraphQL layer with typed queries and a signature-verifying revalidation route. The plugin is still in active development — v0.1.0, tracked against a published PRD, with the shipped vertical slices covering browse, voting, auth, submission, moderation, and webhook revalidation.

Live Board

This board is illustrative demo content for a Signalboard portfolio piece and may be reset at any time.

  • [DEMO] SSO login for teams Under Review
  • [DEMO] Public roadmap page Complete
  • [DEMO] Slack notifications on status change Open
  • [DEMO] Bulk CSV export In Progress
  • [DEMO] Dark mode for the dashboard Planned