Pulse is a 100% free, lightweight, and self-hosted web application for running interactive live sessions like polls, Q&A, rankings, ratings, and wordclouds. It is built for speed, real-time interactivity, and strict GDPR compliance without any user limits or hidden costs.
graph TD
subgraph Clients
P[Smartphone Participants<br>/ABC123]
Host[Presenter Screen / Beamer<br>/live/ABC123]
Remote[Smartphone Remote Control<br>/remote/ABC123]
Dash[Host Dashboard<br>/dashboard]
end
subgraph Infrastructure [Docker Container]
Nginx[Nginx Reverse Proxy & Static Host<br>:80]
Frontend[React 19 SPA<br>Vite + Tailwind v4 + Framer Motion]
Backend[Node.js + Express 5 Server<br>Socket.io + JWT Auth<br>:3001]
DB[(SQLite WAL Mode<br>Prisma ORM)]
end
P <-->|Socket.io & REST| Nginx
Host <-->|Socket.io & REST| Nginx
Remote <-->|Socket.io| Nginx
Dash <-->|REST API| Nginx
Nginx -->|Serve SPA| Frontend
Nginx -->|Proxy API & WS| Backend
Backend <-->|Read / Write| DB
- Free & Unlimited: No subscription fees, no limits on participants or sessions.
- Privacy First & GDPR Compliant: Self-hosted on your own infrastructure. No third-party tracking, no advertising cookies, no external analytics.
- Multi-Language Support (i18n): Native bilingual support in English and German with automatic browser language detection and instant in-app switching.
- Built-in Compliance & Legal Notice: Integrated accessible modals for Imprint (§ 5 DDG) and Privacy Policy (GDPR / DSGVO), fully customizable or overridable via
.env. - Real-Time Synchronization: Uses Socket.io to push results instantly to all connected screens with automatic client reconnects.
- Multiple Session Types:
- Wordcloud: Dynamic sizing based on frequency with Archimedean spiral positioning, sentence-splitting, and stop-word filtering.
- Poll: Classic single-choice live poll with animated percentage distributions.
- Ranking: Prioritization and drag-and-drop sorting by participants.
- Rating: 5-Star scale evaluation for multiple criteria.
- Q&A: Audience questions with real-time upvotes, moderator deletion, and moderation schema readiness.
- Open Ended: Free-text brainstorming with real-time tile layout.
- Presenter Remote Control: Control the presentation view directly from your smartphone via secure QR-code pairing (
/remote/:code) — pause sessions, toggle timers, show/hide results, and trigger floating emojis. - Live Reactions (Emoji Rain): Allow participants to send live reactions (👍, ❤️, 🎉, 🔥, 👏) that float dynamically across the presenter's screen.
- PDF Report Export: Print-optimized report page (
/live/:code/report) with clean CSS print styles to export session summaries directly to PDF. - Session Timer: Hosts can set a live countdown that automatically locks the session when time expires.
- Data Export: Download session results instantly as CSV files.
- Interactive Onboarding: Built-in product tours guide new hosts through the dashboard and live views.
- High-Performance Architecture: SQLite in Write-Ahead Logging (
WAL) mode with sliding-window rate limiters on WebSockets and REST endpoints.
- Frontend: React 19, Vite, Tailwind CSS v4, Framer Motion, Recharts,
react-i18next, Lucide Icons - Backend: Node.js, Express 5, Socket.io, Prisma 6 (SQLite with WAL), JWT Authentication, Helmet
- Infrastructure: Docker & Docker Compose (Multi-stage build with alpine Nginx)
git clone https://github.com/thefraggle/pulse.git
cd pulsePulse includes sensible defaults, but in production you should set your own ADMIN_PASSWORD and JWT_SECRET:
# Backend variables
cp backend/.env.example backend/.env
# Frontend variables
cp frontend/.env.example frontend/.envdocker compose up -d --build- Participant View:
http://localhost/ - Host Dashboard:
http://localhost/dashboard(Default login:admin/ your configuredADMIN_PASSWORD)
Pulse includes built-in, DSGVO-compliant legal and privacy modals. If you operate an official organization and prefer linking your external legal pages, simply define:
# In frontend/.env:
VITE_IMPRESSUM_URL=https://yourcompany.com/imprint
VITE_PRIVACY_POLICY_URL=https://yourcompany.com/privacy- For code guidelines and pull request instructions, see CONTRIBUTING.md.
- For reporting security vulnerabilities, please refer to SECURITY.md.
MIT License - Copyright (c) 2026 Daniel Notthoff