Skip to content

Multiple boards, private roadmaps and weighted votes #41

Description

@mukto90

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

  • A private board and its items are inaccessible to unauthorised users on every surface (page, REST, archive, feed, search, direct URL).
  • Voting restrictions are enforced server-side.
  • Weighted score is computed server-side and stored with each vote row (so changing weights doesn't rewrite history unless recalculated on purpose).
  • Role/capability checks are unit tested.
  • Single-board sites keep working with zero configuration (the default board is implicit).
  • Migration keeps existing shortcodes functional.

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.

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureSomething we want to add

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions