Enable live audience reactions and feedback during Slidev presentations with WebSocket-powered real-time updates.
- ๐ Real-time Reactions - Instant audience feedback with emoji reactions
- ๐ Live Updates - WebSocket-based communication for zero-latency updates
- ๐ Analytics Dashboard - Track engagement metrics and reaction patterns
- ๐จ Embeddable Widget - Drop-in widget for any website or Slidev presentation
- ๐ Durable Objects - Persistent state management with Cloudflare
- ๐ฏ Slide Sync - Automatic slide tracking and reaction mapping
- ๐ฌ Questions & Comments - Collect audience questions per slide
- ๐ฑ Mobile Optimized - QR code access for audience members
- Navigate to My Skills > Add Skill
- Select Import from GitHub
- Enter repository URL:
https://github.com/YOUR_USERNAME/slidev-feedback-skill - Click Import Skill
git clone https://github.com/YOUR_USERNAME/slidev-feedback-skill
cd slidev-feedback-skill
pnpm install
pnpm buildNavigate to the skill in your Amagen dashboard and click "Create New Session". Configure:
- Presentation title
- Number of slides
- Allowed reaction types
- Authentication requirements
Add to your slides.md:
---
layout: default
---
# My Slide Title
<iframe
src="https://widgets.amagen.app/widget/SESSION_ID"
width="100%"
height="120px"
frameborder="0">
</iframe>Or add globally to all slides via setup/main.ts:
import { defineAppSetup } from '@slidev/types'
export default defineAppSetup(({ app }) => {
// Add feedback widget to all slides
})Access the presenter dashboard in Amagen to see:
- Real-time reactions as they happen
- Current slide indicator
- Participant count
- Question feed
- Engagement heatmap
Choose from preset reaction sets or customize:
// Professional
["๐", "๐", "โ", "๐ก", "โ
"]
// Engaging
["โค๏ธ", "๐ฅ", "๐ฎ", "๐ค", "๐"]
// Educational
["๐ฏ", "๐ก", "โ", "โ
", "โญ"]- Open: Anyone can react (default)
- Authenticated: Requires Amagen login
- Token: Custom access tokens
- Duration: Auto-close after N hours
- Rate Limiting: Max reactions per user per slide
- Moderation: Review questions before display
Create components/FeedbackWidget.vue:
<template>
<div class="feedback-widget">
<iframe
:src="`https://widgets.amagen.app/widget/${sessionId}?slide=${$slidev.nav.currentPage}`"
width="100%"
height="120px"
frameborder="0"
/>
</div>
</template>
<script setup>
const sessionId = 'YOUR_SESSION_ID'
</script>Add to presenter notes to see reactions inline:
---
layout: default
---
# Slide Title
Content here...
<!--
Feedback Dashboard: https://app.amagen.com/skills/slidev-feedback/dashboard/SESSION_ID
-->Perfect for training sessions:
- Question collection per slide
- Understanding checks
- Engagement tracking
Great for large audiences:
- Quick emoji reactions
- Real-time sentiment
- Q&A collection
Ideal for teaching:
- Comprehension ratings
- Clarification requests
- Topic interest gauge
POST /api/skills/slidev-feedback/create
{
"presentationTitle": "React Best Practices",
"slideCount": 30,
"allowedReactions": ["๐", "โค๏ธ", "๐ฅ", "๐ค", "๐"],
"requireAuth": false
}POST /api/skills/slidev-feedback/react
{
"sessionId": "xxx",
"slideNumber": 5,
"reaction": "๐",
"userId": "optional"
}GET /api/skills/slidev-feedback/analytics/SESSION_ID# Install dependencies
pnpm install
# Run in development mode
pnpm dev
# Build for production
pnpm build
# Deploy Durable Objects to Cloudflare
pnpm deploy:worker
# Run tests
pnpm test- Frontend: React + TypeScript + shadcn/ui
- Backend: Express handlers + Cloudflare Workers
- Real-time: WebSockets via Durable Objects
- Storage: Supabase for analytics, DO for live state
- Deployment: Amagen platform + Cloudflare edge
MIT ยฉ [Your Name]
- GitHub Issues: Report a bug
- Amagen Community: Discord
- Documentation: Full Docs
Based on the original slidev-realtime-feedback-do by Harshil Agrawal.