Product Roadmap

A public roadmap where people vote on ideas and suggest their own, with a changelog for what shipped.

Plugin

Product Roadmap

A public roadmap where people vote on ideas and suggest their own, with a changelog for what shipped.

  • Category: roadmap
  • Status: available
  • Version: 0.4.0
  • Price: Unknown
  • Source: Official plugin registry
  • Install method: Sandboxed registry plugin
  • Verified: 2026-10-21
  • Compatibility: Not stated in the public registry profile
  • Maintainer: Wbcom Designs

Description

A public roadmap for any EmDash site. Visitors see what you are considering, building and have shipped. They can vote, and they can send an idea that waits for you to approve it.

What you get

  • A board with stages you name. Start with Under review, Planned, In progress and Done. Add, hide, rename or reorder them.
  • Voting. One vote per person per item. Click again to take it back.
  • Suggestions with approval. An idea is saved as a draft. You approve it onto the board or reject it.
  • Guests or members. You choose who can vote and suggest. Guests add a name. Written ideas always wait for review.
  • A changelog. A second collection with a list page and a page per release.
  • Comments. The item page uses EmDash’s own comments. Nothing extra to moderate.
  • Merge. Fold a duplicate into the item you keep. Votes move across, one per person.

How it fits together

The plugin is the engine: routes, storage and the admin screens. An EmDash plugin cannot add pages to your site, so the public pages ship as a site kit you copy in once. See Installation.

The hourly email needs a mail provider. The dashboard card still shows how many ideas are waiting when mail is off.

Installation

Before you install

1. Your site needs a sandbox runner. Registry plugins run in a sandbox. Until the site has one, Admin, Plugins shows “No plugins configured” and there is no Registry in the menu.

  • Node: in your site, run npm install @emdash-cms/sandbox-workerd workerd, then add sandboxRunner: "@emdash-cms/sandbox-workerd/sandbox", inside emdash() in astro.config.mjs.
  • Cloudflare: add import from "@emdash-cms/cloudflare"; and sandboxRunner: sandbox(),. It needs the Workers Paid plan, the worker_loaders binding named LOADER (uncomment it in your Wrangler config) and an R2 bucket as storage: r2(...), or the install stops with “Storage error while installing plugin”. Then run npm run deploy.

Stop the dev server and start it again. Registry now shows in the admin menu.

2. The plugin is the engine. Visitor pages come from its site kit. A registry plugin cannot add pages to your site. Until you copy the kit, its addresses (for example /roadmap/) show your site’s 404 page. That is expected. The kit copy below takes one command.

3. You need Node 22.16 or later for the npx emdash seed step.

Checked on EmDash 1.3.1 with the blog template, on Node and on Cloudflare Workers (registry install).

Install

  1. Admin, Registry, search Product Roadmap, Install, then accept the permissions.

  2. From your site’s root folder:

    kit="$(mktemp -d)" &&
      git clone --depth 1 \
        --branch v0.4.0 \
        https://github.com/wbcomdesigns/emdash-roadmap \
        "$kit/emdash-roadmap" &&
      "$kit/emdash-roadmap/scripts/add-to-site.sh" .
  3. Nothing to paste. Restart the dev server.

  4. Add the printed links in Admin, Menus.

  5. Open Admin, Roadmap, Ideas.

After every update, run step 2 with the new tag. Full guide: https://github.com/wbcomdesigns/emdash-roadmap/blob/v0.4.0/docs/website/getting-started/install.md

FAQ

Why is /roadmap/ a 404 after install? The plugin cannot create pages. Run the kit command from the Installation tab (or from Admin, Roadmap, Ideas) with the tag of the version you installed, then restart the dev server.

The board says it could not load. Copy the kit again from the tag of the version you installed. The kit and the plugin are released together.

Can guests vote and suggest ideas? Yes, when Settings is set to Anyone (the default) and the host gives EmDash the visitor’s address: Cloudflare, or trustedProxyHeaders in the site config. Otherwise guests see a sign-in link and Settings says so. Every idea waits for your approval.

A guest sees a 401 in the browser console. Expected: the page checks a signed-in member’s votes first. The page is fine.

How do I move an item to another stage? On the item’s edit screen, use the Stage panel on the right.

Do new ideas go live straight away? No. A suggestion is saved as a draft. Approve it on Ideas to put it on the board.

What happens if I rename a stage? The board uses the new name. Items stay in that column. You do not need to edit each item.

Does it work in dark mode? Yes. The kit colours follow your site theme.

Does it send email? One short notice an hour when ideas are waiting, if the site has a mail provider. The notice has no idea text and no link. The dashboard card always shows the count.

Is there a paid version? No. Everything here is free.

Changelog

0.4.0

Every page, vote and admin screen now stays within Cloudflare’s limit of 10 requests per plugin call on a busy test site. Cloudflare stays marked not supported until it is checked there. No new permission.

  • New: each item keeps a running vote count; counts from 0.3.0 are rebuilt on Ideas page loads and hourly.
  • Improve: merge, Roadmap votes erase and the hourly cleanup run in steps.
  • Fix: on Cloudflare a guest vote was refused as “not on the board”.
  • Fix: the kit script no longer claims the content types were created on a Cloudflare site.

Copy the kit again after you update. Until then, a category-filtered board shows every item and Take back all my votes stops with an error after 7.

kit="$(mktemp -d)" &&
  git clone --depth 1 \
    --branch v0.4.0 \
    https://github.com/wbcomdesigns/emdash-roadmap \
    "$kit/emdash-roadmap" &&
  "$kit/emdash-roadmap/scripts/add-to-site.sh" .

0.3.0

New permission: Read retained content revision history, so the Stage panel can see and move an item while it has unpublished changes. You approve it once when you update. Guests need a visitor address to vote. Copy the kit again after you update:

kit="$(mktemp -d)" &&
  git clone --depth 1 \
    --branch v0.3.0 \
    https://github.com/wbcomdesigns/emdash-roadmap \
    "$kit/emdash-roadmap" &&
  "$kit/emdash-roadmap/scripts/add-to-site.sh" .
  • New: Set up visitor pages card; scripts/add-to-site.sh copies the whole kit.
  • Improve: Stage panel is the one place to set the stage.
  • Fix: Ideas counts, nested form, alignment, dark mode.
  • Security: no guest writes without a visitor address; one guest per IPv4 or IPv6 /64; hashes cleared after 30 days.

0.2.1

  • Fix: the My votes file no longer has the same name as WB Polls’, so both kits can sit on one site. Copy the kit again after updating.

Older versions: https://github.com/wbcomdesigns/emdash-roadmap/blob/main/CHANGELOG.md