ClassPulse is a real-time audience engagement web application built with Flask. It allows presenters to create interactive sessions with different question types and receive instant feedback from their audience.
- Real-time Interaction: Engage with your audience in real-time using WebSockets
- Multiple Question Types: Create multiple-choice questions, word clouds, and rating scales
- QR Code Generation: Easy session joining with auto-generated QR codes
- Results Visualization: See responses as they come in with instant updates
- Data Export: Export results to CSV for further analysis
- User Management: Admin panel for user verification and management
- Session Archive: Keep your session history organized
- Multiple Choice: Present options and collect structured responses
- Word Cloud: Generate word clouds from free-text responses
- Rating: Collect numerical ratings on a defined scale
- Clone the repository
- Install dependencies:
pip install -r requirements.txt - Run the application:
python app.py - Access the application at http://localhost:5002
The UI is styled with Tailwind, compiled ahead of time to static/css/tailwind.css
(this built file is committed, so the app runs without Node). If you change the
markup in templates/ you need to rebuild the stylesheet:
make build-css # one-off minified build (runs npm install + npm run build:css)
make watch-css # rebuild automatically while developing
Requires Node.js / npm. The Tailwind source lives in static/src/input.css and the
content/safelist config in tailwind.config.js.
There is no default admin account. On a fresh deployment, the first person to register becomes a verified admin automatically — register, then log in. Subsequent registrations require admin approval.
The footer of every page shows the build (a link to the exact git commit), so you can confirm which version/container you are running.
- Python 3.6+
- Flask and extensions (Flask-SQLAlchemy, Flask-SocketIO)
- Additional libraries: qrcode, Pillow
This project is licensed under the MIT License - see the LICENSE file for details.