View project on GitHub

About

The Open-Source Classroom Polling Project seeks to simplify the interactive side of the educational experience, through the development of a free-to-use web-based polling system. Addressing the shortcomings of existing polling software, this project emphasizes affordability, responsiveness, and enhanced interactive capabilities suitable for today's classrooms. The app aims to deliver a solution that fosters real-time engagement, collaborative learning, and seamless integration with educational platforms.

Open-Response Lecture Prototype Screenshot
Figure 1. Screenshot of Open Response's Student Question Answering Interface.

A Development in Progress

This project is being developed as part of the Oregon State University Copmuter Science Capstone Senior Projects Program. Originally launched in 2021 by a team of six students, the project has since undergone multiple iterations and continuous enhancements.

Project Timeline and Status

The platform is on track for real-world deployment in the 2025-2026 academic year. As of June 2025, core functionality is complete, with the following milestones remaining:

  • Implementation of course roster management and email notification systems.
  • Expansion of supported question types beyond multiple choice and multiple answer.
  • Full compliance with WCAG 2.1 Level AA accessibility standards for use in classrooms as well as expanded mobile support.
  • Completion of test coverage for the accessibility, performance, unit testing, integration testing, and end to end testing suites.
  • Security enhancements to support FERPA compliance, including SSO integration and related safeguards.
  • Dashboards and tools for administrator users to manage and maintain the platform.
  • Additional quality-of-life improvements and polish.

2024-2025 Capstone Group

The 2024-2025 team made significant contributions across the system, including bug fixes and infrastructure improvements. Key accomplishments include:
  • Resolving technical debt stemming from a broken codebase, deprecated frontend frameworks, and fixing what was left by the previous group.
  • Redesigning and implementing an updated database schema, reworking entire backend REST API.
  • Refining the frontend interface to align with the latest Figma design prototypes.
  • Expanding the test suite to ensure robust validation across multiple components.
  • Deploying the system to an AWS Lightsail instance.
  • Establishing DevOps practices and GitHub Workflows for automated testing.
  • Enabling real-time responsiveness through WebSocket integration.
  • Enhancing course management capabilities for instructors.

Addressing Key Issues

For Students

Students often face additional costs for polling software that is outdated and lacks necessary features. Our solution is affordable, user-friendly, and compatible with various devices, ensuring seamless participation in classroom~ activities.

For Instructors

Instructors struggle with limited question formats and lack of real-time feedback mechanisms in current polling tools. Our software provides real-time feedback and supports diverse question formats, allowing educators to assess student understanding effectively and adjust lectures as needed.

For Insitutions

Institutions seek cost-effective technological solutions that integrate well with existing systems. Our open-source software is customizable, integrates seamlessly with Learning Management Systems like Canvas, and reduces the financial burden on both students and institutions.

Why Choose Our Solution?

Open Response is a free, open-source classroom polling tool built to meet the practical needs of modern educators and students. Designed for ease of use and full LMS compatibility, it simplifies classroom interaction, boosts student engagement, and supports inclusive learning environments. Whether used in live sessions or asynchronously, it helps instructors focus less on logistics and more on teaching.

The platform includes the following key features:

  • Role-Based Access for Instructors and Students. Ensures a secure and focused experience: instructors manage content and class structure, while students participate without distraction.
  • Streamlined Class & Lecture Tools. Instructors can quickly set up courses, organize sessions, and manage rosters, reducing prep time and making it easy to run both live and asynchronous lectures.
  • Interactive Question & Polling System. Enables instructors to ask questions that fit their teaching style, from quick polls to open-ended prompts, boosting student engagement during lectures.
  • Live Participation with Real-Time Feedback. Helps instructors gauge understanding on the fly while keeping students actively involved through instant, in-lecture interaction.
  • Built-In Analytics for Smarter Teaching. After each session, instructors can review response trends and participation data to identify areas for review or follow-up.
  • Canvas Integration for Seamless Grading. Reduces administrative overhead by letting instructors export participation and grades directly into Canvas via CSV exports.
  • Accessible and Mobile-Ready Design. Supports inclusive classrooms by meeting WCAG 2.1 AA accessibility standards and offering full functionality on mobile devices, ensuring all students can participate equally.

Comparison with Existing Solutions

While many classroom polling tools exist, few balance affordability, functionality, and openness. Open Response stands out by combining key strengths of commercial platforms, such as LMS support and flexible polling formats, while remaining free and open-source. The comparison below highlights how it addresses gaps left by other solutions.

Platform Free Open Source LMS Support Advanced Features Limitations
Top Hat No No Yes (LMS Integration) Yes Paid access
Poll Everywhere Limited No Yes (LMS Integration) Yes Free plan is restricted
Canvas Polls Yes Yes Canvas Only No Canvas-exclusive, limited features
Google Forms Yes No No Basic No LMS support, weak for large classes
Mentimeter Limited No No Yes Free plan limits, not classroom-focused
Kahoot! Yes No No Engaging No LMS integration, limited collaboration
Open Response Yes Yes Yes (CSV Import/Export) Yes None — designed to be accessible and comprehensive

Technical Implementation

Key Technologies Used

The Open-Response system is built using a modern web stack, including:

  • Frontend: Vite with React.js for a responsive and dynamic user interface, ensuring a smooth user experience.
  • Backend: Node.js with Express.js for RESTful API, ensuring efficient data handling and communication.
  • Database: MySQL for robust data storage and management, providing scalability and reliability.
  • Real-Time Communication: WebSockets for real-time interaction between instructors and students during polling sessions.
  • Caching: Redis for caching frequently accessed data, improving performance and reducing latency.
  • Containerization and Orchestration: Docker for containerization, ensuring consistent environments across development and production. Docker Swarm for orchestrating multi-container applications.
  • Deployment: AWS Lightsail for hosting the application, ensuring high availability and performance.
  • Architecture Overview

    Open Response uses a modular, containerized architecture to support scalability, reliability, and ease of maintenance. Each service runs in its own Docker container, enabling smooth deployment, load balancing, and horizontal scaling as classroom usage grows. The following diagram illustrates the system's key components and their interactions:

    Architecture Diagram
    Figure 2. System architecture showing frontend, backend, and database layers under Docker Swarm orchestration.

    The architecture is built for high concurrency and real-time interaction. Incoming user traffic is routed through a load balancer that distributes requests to containerized services managed by Docker Swarm. The Vite/React frontend communicates with two backend APIs: a REST API for standard HTTP requests and a WebSocket API for live classroom interactions. Backend services interact with a Redis cache for fast, transient data access and a MySQL database for persistent storage. This separation of concerns ensures scalable performance, low-latency updates, and easier maintenance as resource demands grow.

    Development Challenges and Solutions

    Some of the key challenges encountered by the latest development team largely revolve around inhereted technical debt from earlier design decisions made by previous groups. These caused significant setbacks in the development process, delaying the project timeline and requiring extensive refactoring of the codebase. These issues have largely been resolved, but at the cost of less feature completion by the 2024-2025 team.

    Regardless, the larged obstacle faced by the team is a lack of sufficent development time. The project is being developed as part of a capstone course, and the team is limited to a single academic year to complete the project, while simultaneously balancing a normal credit workload. This has resulted in a lack of time to fully implement all features and test them thoroughly. The team has worked hard to prioritize the most important features and ensure that they are implemented correctly, but there is still remaining work to be done.

    Documentation and Support

    Where to Find Help

    Installation instructions and developer documentation is available in the project's README.md and at the Open-Response Wiki. Included in the wiki are instructions for accessing, downloading, and running the project locally, comprehensive documentation, and a user guide for instructors, students, and administrators.

    Accessing and Running the Project

    To install and run the project locally for development, follow the steps on the project's GitHub Repository README.md. For institutions and school IT departments interested in self-hosting their own instance of Open-Response, the project is designed to be easily deployable on any server with Docker and Docker Compose installed.

    For more information on deploying the project, please refer to the project's DEPLOYMENT.md for instructions to set up a production instance of the project on AWS. You can still largely follow the same instructions to set up a local instance of the project, but you will need to make some changes to the configuration files to run it locally.

    Installation Requirements

    To run the project locally for development, you will need to have the following software installed on your machine on preferrably a Linux-based operating system. The project has been tested on Ubuntu 22.04, but should work on any Linux-based operating system. The project has not been tested on Windows or MacOS, but should work with some modifications to the installation instructions. If you do not have access to a Linux-based operating system, consider using WSL2 if on a Windows environment.

    • Docker
    • Docker Compose
    • Node.js
    • MySQL
    • Redis
    • Repository/Contact Information

      Our GitHub repository contains the source code, documentation, and issue tracking for the project. Contributions from the open-source community are welcome and encouraged. For questions or additional information submit a GitHub Issue or open a Discussion.

      Learn More

      To learn more about the project, its goals, and future developments, visit our GitHub Repository or reach out using the methods above.