A web-based platform for teaching qualitative research methods where students can code interview transcripts and compare their work with classmates in real-time.
- Multiple Interviews: Work with multiple interview transcripts
- Horizontal & Vertical Coding: Code within interviews and apply the same codes across interviews
- Interactive Coding: Highlight text and assign codes/themes with color coding
- Code Management: View, edit, and delete codes with visual code list showing per-interview counts
- Class Comparison: See heat maps and statistics comparing your coding with classmates
- Instructor Dashboard: Monitor student progress and export data
- Auto-save: Automatically saves your work every 30 seconds
- Local Storage: Works offline with browser storage backup
- Python 3.7 or higher
- pip (Python package manager)
- Install backend dependencies:
cd backend
pip install -r requirements.txt- Start the backend server:
python app.pyOr on Windows:
python app.pyThe server will run on http://localhost:3000
- Open the frontend:
Simply open index.html in a web browser, or use a local server:
# Using Python 3
python -m http.server 8000
# Using Node.js http-server (install globally: npm install -g http-server)
http-server -p 8000Then navigate to http://localhost:8000
- Enter your name or student ID
- Select an interview from the dropdown
- Read the interview transcript on the left
- Highlight text and assign codes/themes
- Switch between interviews - codes are shared across interviews (vertical coding)
- Review your codes in the right panel (shows counts per interview)
- Click "Compare with Class" to see how your coding compares with classmates
- Export your work as JSON if needed
- Select "Instructor" role and enter password:
instructor123 - View dashboard with:
- Number of students who completed coding
- Most common themes
- Statistics about class coding
- Export all data as CSV
.
├── index.html # Main HTML file
├── styles.css # CSS styles
├── app.js # Frontend JavaScript
├── backend/
│ ├── app.py # Flask backend server
│ ├── requirements.txt # Python dependencies
│ └── coding_data.db # SQLite database (created automatically)
└── README.md # This file
- Frontend: Vanilla JavaScript, HTML5, CSS3
- Backend: Python with Flask
- Database: SQLite (built-in)
- Storage: Browser localStorage + SQLite database
POST /api/submit-coding- Submit student coding dataGET /api/class-data- Get aggregated class data for comparisonGET /api/instructor-data- Get instructor dashboard dataGET /api/export-csv- Export all data as CSVGET /api/health- Health check
Edit app.js and update the password check in the handleLogin function, or implement proper authentication in the backend.
Edit the SAMPLE_TRANSCRIPT constant in app.js.
Modify the CODE_COLORS array in app.js.
Backend won't start:
- Make sure port 3000 is not in use
- Check that all dependencies are installed (
pip install -r requirements.txtin backend folder) - Ensure Python 3.7+ is installed (
python --version)
Can't connect to server:
- Ensure backend is running on
http://localhost:3000 - Check browser console for CORS errors
- Frontend will work with localStorage even if backend is offline
Database errors:
- Delete
backend/coding_data.dbto reset the database - Make sure the backend folder has write permissions
Python import errors:
- Make sure you're using Python 3:
python3 app.py(on some systems) - Create a virtual environment:
python -m venv venvthen activate it before installing dependencies
MIT