Pollarise: A Real-Time Social Polling Platform

Building the frontend for a fast-interaction polling platform from Figma designs, with local-first updates for high-frequency voting.

3 min read

Sabin Shrestha

Full-Stack Developer — Next.js, React & React Native

Summary

Pollarise is a real-time social polling platform focused on fast interactions and community engagement — think quick opinion polls with live vote counts and comments, built to stay responsive under high-frequency activity.

Problem #

Polling apps live or die on perceived speed. If a vote or comment takes a visible beat to register, the interaction feels broken, and casual users bounce before engaging a second time. The brief was to turn a set of Figma designs into a production frontend that could handle bursts of concurrent votes and comments without the UI ever feeling like it's waiting on the network.

Solution #

The frontend is built on Next.js with Tailwind CSS, talking to a FastAPI backend. The key architectural decision was local-first updates: a vote or comment is applied to local state immediately, then reconciled with the server response in the background, rather than waiting on a round-trip before the UI reflects the action.

hooks/useOptimisticVote.ts
function useOptimisticVote(pollId: string) {
  const [localTally, setLocalTally] = useState<Tally | null>(null);
 
  const vote = async (optionId: string) => {
    // Apply immediately — the user sees their vote instantly.
    setLocalTally((prev) => applyVote(prev, optionId));
 
    // Reconcile with the server in the background.
    const confirmed = await api.vote(pollId, optionId);
    setLocalTally(confirmed);
  };
 
  return { localTally, vote };
}

Architecture #

The client applies a vote or comment to local state immediately, sends it to the FastAPI backend, and reconciles once the backend confirms the persisted tally — so the UI never waits on the round trip to feel responsive.

Tech stack #

LayerChoiceWhy
FrontendNext.jsFast static shell, React Server Components for the feed
StylingTailwind CSSRapid, consistent implementation straight from Figma
BackendFastAPILightweight, fast async Python API for vote/comment endpoints
DesignFigmaSource of truth for every screen and interaction state

Problems solved #

  • Built the frontend architecture directly from Figma designs
  • Created smooth real-time interactions for voting and comments
  • Implemented an optimized UI for high-frequency user activity
  • Improved perceived performance using local-first updates
  • Delivered a scalable social engagement experience

Lessons learned #

Optimistic UI needs a reconciliation story

The easy part is applying the update locally. The part worth planning up front is what happens when the server disagrees with the optimistic state — a vote gets rejected, a comment fails moderation. Deciding that reconciliation strategy early avoided a rewrite later.

© 2026 Sabin Shrestha