A real-time classroom question system where students submit questions anonymously, vote on what matters most, and see instructor responses instantly.
Perfect for lectures, coding sessions, or any classroom where you want to encourage questions without putting students on the spot.
Choose your setup:
Perfect for testing and demonstrations. Includes pre-loaded physics class data.
docker compose -f docker-compose.demo.yml up -dAccess at: http://localhost:8000
Login: admin / demo123
Note: Database resets on every container restart
For actual classroom use with persistent data.
# 1. Create environment configuration
cp .env.example .env
# 2. Set admin password
mkdir -p secrets
echo "YourSecurePassword" > secrets/admin_password.txt
# 3. Start the application
docker compose -f docker-compose.dev.yml up -dAccess at: http://localhost:8001
Login: admin / (your password from secrets file)
Note: Data persists between sessions
- Visit http://localhost:8001/admin-login (or :8000 for demo)
- Login with admin credentials
- Click "API Keys" in the admin panel
- Create a new API key for instructors
- Go to the home page
- Enter your API key and session title
- Click "Create Session"
- Share the QR code or URL with students
- Students scan the QR code or visit the shared URL
- They submit questions anonymously
- Questions appear in real-time, sorted by votes
- You can answer, moderate, and manage questions from the instructor dashboard
- Anonymous Questions - Students ask without fear of judgment
- Real-time Voting - Most important questions rise to the top
- Live Updates - WebSocket connections keep everyone in sync
- QR Code Access - Students join instantly from phones
- Content Moderation - Automatic profanity filtering
- Markdown Support - Rich formatting for instructor answers
- Presentation Mode - Full-screen view for classroom displays
- Data Export - Download session reports as JSON or CSV
# Start demo on :8000
docker compose -f docker-compose.demo.yml up -d
# Start dev on :8001
docker compose -f docker-compose.dev.yml up -dFor public demos, automatically reset to fresh data:
# Set up cron job
chmod +x scripts/reset-demo.sh
crontab -e
# Add this line (resets daily at 3 AM):
0 3 * * * /path/to/raisemyhand/scripts/reset-demo.shSee scripts/setup-demo-cron.md for detailed instructions.
Choose from pre-loaded demo data:
# Physics (default)
docker compose -f docker-compose.demo.yml up -d
# Biology
DEMO_CONTEXT=biology_200 docker compose -f docker-compose.demo.yml up -d
# Computer Science
DEMO_CONTEXT=computer_science_101 docker compose -f docker-compose.demo.yml up -dAvailable contexts: physics_101, biology_200, chemistry_110, calculus_150, computer_science_101
- Full Documentation - Complete feature guide
- Instructor Guide - Step-by-step classroom workflow
- Student Guide - How students use the system
- Admin Guide - User and API key management
- Deployment Guide - Production setup with Nginx
- API Documentation - REST API reference
- FAQ - Common questions and troubleshooting
# Clone and setup
git clone <your-repo-url>
cd raisemyhand
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Configure
cp .env.example .env
# Edit .env and set ADMIN_PASSWORD
# Run
python main.pyAccess at http://localhost:8000
- Backend: FastAPI, SQLAlchemy, WebSockets, SQLite (PostgreSQL-ready)
- Frontend: Vanilla JavaScript, CSS, EasyMDE markdown editor
- Security: JWT auth, bcrypt passwords, CSRF protection, rate limiting
- Deployment: Docker, Docker Compose, Nginx-ready
- Physics/Math: Students ask conceptual questions during problem-solving
- Computer Science: Debugging help and code clarification in real-time
- Large Lectures: Collect questions from hundreds of students simultaneously
- Remote Teaching: Works great for hybrid and online classes
- Docker 20.10+ and Docker Compose 2.0+
- OR Python 3.11+
- 1GB RAM minimum (2GB recommended)
- Modern web browser with WebSocket support
This is educational software built for classroom use. Contributions welcome!
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - See LICENSE file for details.
- Issues: Report bugs and request features via GitHub Issues
- Troubleshooting: Check docs/TROUBLESHOOTING.md
- Questions: See docs/FAQ.md
Built for education with β€οΈ
Documentation β’ Report Issue β’ View Demo