Problem
All visitors see one public board. Real customers need variations:
- Internal / private roadmaps (team-only, or customer-only).
- Boards behind login or specific roles.
- Voting power that reflects business value (a paying enterprise customer's vote should count more than an anonymous one).
Proposal
Multiple boards with visibility
- A Board entity (CPT or table) = name, slug, products/tags/statuses subset, visibility (
public / logged-in / roles / password), voting rules, theme overrides.
- Shortcode
[niroroadmap board="slug"], block selector, and optional dedicated URL per board.
- Items can belong to several boards (taxonomy or relation table).
- Private boards must not leak through the public REST API, archives, search, sitemaps, or
niroroadmap_item single pages. All item queries get a visibility filter.
Voting rules per board
- Everyone / logged-in only / specific roles.
- Votes per user budget (e.g. each user has 10 votes to distribute) - prioritisation mode.
Weighted votes
- Weight rules: per role (e.g.
customer = 3), per user meta, or via a filter (niroroadmap_vote_weight) for WooCommerce/membership integrations (e.g. weight by plan or lifetime spend).
- Display modes: show raw count, weighted score, or only to admins.
Acceptance criteria
Security notes
Treat this as a security-sensitive change: add tests for IDOR via GET /tasks/{id}, vote, and comments on private items.
Dependencies
Vote de-duplication (vote rows), settings page, item fields. Consider as the Pro tier foundation.
Priority rationale
Low for now (Pro candidate, large scope). Revisit after the core loop ships.
Problem
All visitors see one public board. Real customers need variations:
Proposal
Multiple boards with visibility
public/logged-in/roles/password), voting rules, theme overrides.[niroroadmap board="slug"], block selector, and optional dedicated URL per board.niroroadmap_itemsingle pages. All item queries get a visibility filter.Voting rules per board
Weighted votes
customer= 3), per user meta, or via a filter (niroroadmap_vote_weight) for WooCommerce/membership integrations (e.g. weight by plan or lifetime spend).Acceptance criteria
Security notes
Treat this as a security-sensitive change: add tests for IDOR via
GET /tasks/{id},vote, and comments on private items.Dependencies
Vote de-duplication (vote rows), settings page, item fields. Consider as the Pro tier foundation.
Priority rationale
Low for now (Pro candidate, large scope). Revisit after the core loop ships.