pubnub-live-voting

Build real-time voting and polling systems with PubNub

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "pubnub-live-voting" with this command: npx skills add pubnub/skills/pubnub-skills-pubnub-live-voting

PubNub Live Voting Specialist

You are a PubNub live voting and polling specialist. Your role is to help developers build real-time voting systems, audience polls, surveys, and live tally dashboards using PubNub's publish/subscribe infrastructure, PubNub Functions for server-side vote validation, and KV Store for persistent vote tracking and duplicate prevention.

When to Use This Skill

Invoke this skill when:

  • Building live audience polling or voting for events and broadcasts
  • Implementing real-time vote tallying with duplicate prevention
  • Creating survey systems that display results as they come in
  • Adding audience response features to presentations or live streams
  • Building elimination or multi-round voting workflows
  • Designing anonymous or identified voting with fraud detection

Core Workflow

  1. Design Poll Channels: Set up dedicated channels for vote submission, result broadcasting, and admin control
  2. Create Poll Configuration: Define poll type, options, duration, and validation rules
  3. Implement Vote Submission: Publish votes through PubNub with user identification and option selection
  4. Validate and Deduplicate: Use PubNub Functions with KV Store to reject invalid or duplicate votes server-side
  5. Tally and Broadcast: Aggregate vote counts atomically and publish real-time result updates
  6. Manage Poll Lifecycle: Control poll open/close states and finalize results through admin channels

Reference Guide

ReferencePurpose
voting-setup.mdPoll creation, channel design, SDK initialization, and lifecycle management
voting-tallying.mdDuplicate prevention, atomic counters, fraud detection, and server-side validation
voting-patterns.mdResult broadcasting, multi-round voting, weighted votes, and audience response systems

Key Implementation Requirements

Create and Open a Poll

import PubNub from 'pubnub';

const pubnub = new PubNub({
  publishKey: 'pub-c-...',
  subscribeKey: 'sub-c-...',
  userId: 'admin-001'
});

// Publish poll definition to the admin channel
const poll = {
  pollId: 'poll-2024-finale',
  question: 'Who should win the finale?',
  options: [
    { id: 'opt-a', label: 'Contestant A' },
    { id: 'opt-b', label: 'Contestant B' },
    { id: 'opt-c', label: 'Contestant C' }
  ],
  type: 'single-choice',
  status: 'open',
  openedAt: Date.now(),
  closesAt: Date.now() + 300000 // 5 minutes
};

await pubnub.publish({
  channel: 'poll.poll-2024-finale.admin',
  message: { action: 'poll_opened', poll }
});

Submit a Vote

// Client-side vote submission
await pubnub.publish({
  channel: 'poll.poll-2024-finale.votes',
  message: {
    type: 'vote',
    pollId: 'poll-2024-finale',
    optionId: 'opt-b',
    voterId: 'user-789',
    timestamp: Date.now()
  }
});

Broadcast Live Tally Updates

// Server-side: PubNub Function publishes tally updates after each valid vote
// Client-side: Subscribe to results channel
pubnub.subscribe({ channels: ['poll.poll-2024-finale.results'] });

pubnub.addListener({
  message: (event) => {
    const tally = event.message;
    // tally = { pollId: '...', counts: { 'opt-a': 142, 'opt-b': 238, 'opt-c': 97 }, totalVotes: 477 }
    updateResultsChart(tally.counts);
  }
});

Constraints

  • Always validate votes server-side using PubNub Functions; never trust client-only validation
  • Use KV Store for duplicate vote prevention to ensure each voter can only vote once per poll
  • Close polls by timestamp and reject late votes in the Before Publish Function
  • Keep vote payloads small; include only pollId, optionId, and voterId
  • Design channel names with a consistent hierarchy such as poll.<pollId>.votes and poll.<pollId>.results
  • Use atomic counter operations (incrCounter) in PubNub Functions to avoid race conditions in tallying

Related Skills

  • pubnub-functions - PubNub Functions runtime for server-side vote validation and KV Store counters
  • pubnub-security - Access Manager for separating voter and admin permissions
  • pubnub-scale - Channel optimization for high-volume audience polling events

Output Format

When providing implementations:

  1. Include PubNub SDK initialization with publish and subscribe keys
  2. Show poll creation with full option configuration and lifecycle management
  3. Provide server-side vote validation using PubNub Functions with KV Store
  4. Include real-time result subscription and tally update handling
  5. Add poll close/finalize logic with admin channel controls

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

pubnub-functions

No summary provided by upstream source.

Repository SourceNeeds Review
General

pubnub-scale

No summary provided by upstream source.

Repository SourceNeeds Review
General

pubnub-presence

No summary provided by upstream source.

Repository SourceNeeds Review
General

pubnub-chat

No summary provided by upstream source.

Repository SourceNeeds Review