explaingit

purakh-nath/pulse

0TypeScriptAudience · developerComplexity · 3/5ActiveSetup · moderate

TLDR

Realtime polling web app where the owner creates polls in a dashboard and anonymous voters cast votes via a public link, with live charts pushed over Socket.io.

Mindmap

mindmap
  root((Pulse))
    Inputs
      Poll definition
      Voter clicks
      Google login
    Outputs
      Live charts
      Final results
      Presence counts
    Use Cases
      Run a live audience poll
      Embed polls in events
      Track vote analytics
    Tech Stack
      React
      Node
      Postgres
      Redis
      Socket.io

Things people build with this

USE CASE 1

Spin up a self-hosted live polling site with Google sign-in for poll owners and link-only voting for guests.

USE CASE 2

Study a working four-layer anti-double-vote scheme (signed cookie, fingerprint, session token, hashed IP).

USE CASE 3

Use the BullMQ + Redis + Socket.io pattern as a template for any other realtime aggregation app.

USE CASE 4

Reuse the React Query + Zustand + Recharts dashboard layout for other admin tools.

Tech stack

ReactViteNodeExpressPostgreSQLRedisSocket.io

Getting it running

Difficulty · moderate Time to first run · 1h+

Needs Postgres, Redis, and Google OAuth credentials configured before the first dev run.

License is not stated in the available content.

In plain English

Pulse is a polling website where one person creates a poll inside a dashboard and shares a public link, and the people who follow that link can vote without making an account. As votes come in, the poll owner sees the counts update live on charts, without needing to refresh the page. The README describes it as a realtime collaborative polling platform. The project is organized as one repository with two parts, a frontend and a backend. The frontend is built with React, Vite, Tailwind for styling, and a mix of libraries to handle data and forms, including React Query for fetching server data, Zustand for keeping local state, and Recharts for drawing the result charts. Logging in is done through Google, so users do not need a separate password. The backend is a Node.js server using Express, PostgreSQL as the main database, and Redis as a fast in-memory store. It uses Socket.io to push live updates to anyone watching a poll, and a job queue library called BullMQ to handle background work like aggregating vote counts. The README explains that anonymous voters are tracked through a four-layer system, combining a signed cookie, a device fingerprint, a server-side session token, and a hashed IP, so the same person is less likely to vote twice. Features listed include drag-and-drop ordering of poll options, slug-based public URLs, live presence counts of who is viewing a poll, and on-demand publishing of final results. There are also rate limits per endpoint and several caching tricks meant to keep the analytics page fast even under heavy load. The README provides a directory map, database tables, and a full API route summary under the /api/v1 prefix.

Copy-paste prompts

Prompt 1
Walk me through running Purakh-Nath/Pulse locally with Postgres and Redis in Docker.
Prompt 2
Explain how Pulse prevents the same anonymous voter from voting twice across the four tracking layers.
Prompt 3
Add a new poll type to Pulse that supports ranked choice voting and update the Socket.io event payload.
Prompt 4
Replace Pulse's Google login with an email magic-link flow and explain which files change.
Prompt 5
Sketch how Pulse's BullMQ queue aggregates votes and what would happen if Redis goes down mid-poll.
Open on GitHub → Explain another repo

Generated 2026-05-22 · Model: sonnet-4-6 · Verify against the repo before relying on details.