-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
281 lines (259 loc) · 21.2 KB
/
Copy pathindex.html
File metadata and controls
281 lines (259 loc) · 21.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
<title>Open-Response</title>
</head>
<body>
<header>
<div class="inner">
<div id="header-logo">
<img id="open-response-logo" src="images/logo512.png" alt="Open-Response Logo" />
<div class="title">
<h1>Open-Response</h1>
<h2>Open-Source Classroom Polling Software</h2>
</div>
</div>
<a href="https://github.com/OSU-MC/Open-Response" class="button"><small>View project on</small> GitHub</a>
</div>
</header>
<div id="content-wrapper">
<div class="inner clearfix">
<section id="main-content">
<h1>About</h1>
<p>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.</p>
<figure class="splash">
<img id="splash-image" src="images/live-lecture-prototype.png" alt="Open-Response Lecture Prototype Screenshot"/>
<figcaption><strong>Figure 1</strong>. Screenshot of Open Response's Student Question Answering Interface.</figcaption>
</figure>
<h1>A Development in Progress</h1>
<p> This project is being developed as part of the <a href="https://engineering.oregonstate.edu/EECS/alumni-industry/student-engagement/Capstone">Oregon State University Copmuter Science Capstone Senior Projects</a> Program. Originally launched in 2021 by a team of six students, the project has since undergone multiple iterations and continuous enhancements.</p>
<h2> Project Timeline and Status</h2>
<p>The platform is on track for small scale beta testing in the 2026-2027 academic year. As of June 2026, core functionality is mostly complete, with the following milestones remaining:</p>
<ul>
<li>Implementation of course roster management and email notification systems.</li>
<li>Expansion of supported question types beyond multiple choice and multiple answer.</li>
<li>Full compliance with WCAG 2.1 Level AA accessibility standards for use in classrooms as well as expanded mobile support.</li>
<li>Completion of test coverage for the accessibility, performance, unit testing, integration testing, and end to end testing suites.</li>
<li>Security enhancements to support FERPA compliance, including SSO integration and related safeguards.</li>
<li>Dashboards and tools for administrator users to manage and maintain the platform.</li>
<li>Additional quality-of-life improvements and polish.</li>
</ul>
<h2>2025-2026 Capstone Group</h2>
The 2025-2026 team focused on cleaning up bugs in the system and implementing a few requested features. Key accomplishments include:
<ul>
<li>Expanding Kanban board to more accurately describe the current state of development.</li>
<li>Fixing setup bugs for unix systems.</li>
<li>Formatting all code in repository to align with GitHub workflows.</li>
<li>Creating sitemap for better understanding of page relationships.</li>
<li>Fixing bugs on basic live functionality.</li>
<li>Implementing import student list feature via CSV file.</li>
<li>Implementing export student grades feature to CSV file.</li>
<li>Updating question functionality to support more than 4 answer choices.</li>
<li>Implementing functionality to create new lectures from inside section with auto-refresh.</li>
<li>Refactoring code to expand login validation.</li>
<li>Fixing leftover bugs/todos from previous capstone groups.</li>
</ul>
<h2>2024-2025 Capstone Group</h2>
The 2024-2025 team made significant contributions across the system, including bug fixes and infrastructure improvements. Key accomplishments include:
<ul>
<li>Resolving technical debt stemming from a broken codebase, deprecated frontend frameworks, and fixing what was left by the previous group.</li>
<li>Redesigning and implementing an updated database schema, reworking entire backend REST API.</li>
<li>Refining the frontend interface to align with the latest Figma design prototypes.</li>
<li>Expanding the test suite to ensure robust validation across multiple components.</li>
<li>Deploying the system to an AWS Lightsail instance.</li>
<li>Establishing DevOps practices and GitHub Workflows for automated testing.</li>
<li>Enabling real-time responsiveness through WebSocket integration.</li>
<li>Enhancing course management capabilities for instructors.</li>
</ul>
<h1>Addressing Key Issues</h1>
<h2>For Students</h2>
<p>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.</p>
<h2>For Instructors</h2>
<p>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.</p>
<h2>For Insitutions</h2>
<p>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.</p>
<h1>Why Choose Our Solution?</h1>
<p>
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.
<br><br>
The platform includes the following key features:
</p>
<ul>
<li><strong>Role-Based Access for Instructors and Students</strong>. Ensures a secure and focused experience: instructors manage content and class structure, while students participate without distraction.</li>
<li><strong>Streamlined Class & Lecture Tools</strong>. 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.</li>
<li><strong>Interactive Question & Polling System</strong>. Enables instructors to ask questions that fit their teaching style, from quick polls to open-ended prompts, boosting student engagement during lectures.</li>
<li><strong>Live Participation with Real-Time Feedback</strong>. Helps instructors gauge understanding on the fly while keeping students actively involved through instant, in-lecture interaction.</li>
<li><strong>Built-In Analytics for Smarter Teaching</strong>. After each session, instructors can review response trends and participation data to identify areas for review or follow-up.</li>
<li><strong>Canvas Integration for Seamless Grading</strong>. Reduces administrative overhead by letting instructors export participation and grades directly into Canvas via CSV exports.</li>
<li><strong>Accessible and Mobile-Ready Design</strong>. Supports inclusive classrooms by meeting WCAG 2.1 AA accessibility standards and offering full functionality on mobile devices, ensuring all students can participate equally.</li>
</ul>
<h2>Comparison with Existing Solutions</h2>
<p>
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.
</p>
<table>
<thead>
<tr>
<th><strong>Platform</strong></th>
<th><strong>Free</strong></th>
<th><strong>Open Source</strong></th>
<th><strong>LMS Support</strong></th>
<th><strong>Advanced Features</strong></th>
<th><strong>Limitations</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td>Top Hat</td>
<td>No</td>
<td>No</td>
<td>Yes (LMS Integration)</td>
<td>Yes</td>
<td>Paid access</td>
</tr>
<tr>
<td>Poll Everywhere</td>
<td>Limited</td>
<td>No</td>
<td>Yes (LMS Integration)</td>
<td>Yes</td>
<td>Free plan is restricted</td>
</tr>
<tr>
<td>Canvas Polls</td>
<td>Yes</td>
<td>Yes</td>
<td>Canvas Only</td>
<td>No</td>
<td>Canvas-exclusive, limited features</td>
</tr>
<tr>
<td>Google Forms</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>Basic</td>
<td>No LMS support, weak for large classes</td>
</tr>
<tr>
<td>Mentimeter</td>
<td>Limited</td>
<td>No</td>
<td>No</td>
<td>Yes</td>
<td>Free plan limits, not classroom-focused</td>
</tr>
<tr>
<td>Kahoot!</td>
<td>Yes</td>
<td>No</td>
<td>No</td>
<td>Engaging</td>
<td>No LMS integration, limited collaboration</td>
</tr>
<tr>
<td><strong>Open Response</strong></td>
<td><strong>Yes</strong></td>
<td><strong>Yes</strong></td>
<td><strong>Yes (CSV Import/Export)</strong></td>
<td><strong>Yes</strong></td>
<td><strong>None — designed to be accessible and comprehensive</strong></td>
</tr>
</tbody>
</table>
<h1>Technical Implementation</h1>
<h2>Key Technologies Used</h2>
<p>
The Open-Response system is built using a modern web stack, including:
<ul>
<li><strong>Frontend</strong>: Vite with React.js for a responsive and dynamic user interface, ensuring a smooth user experience. </li>
<li><strong>Backend</strong>: Node.js with Express.js for RESTful API, ensuring efficient data handling and communication.</li>
<li><strong>Database</strong>: MySQL for robust data storage and management, providing scalability and reliability.</li>
<li><strong>Real-Time Communication</strong>: WebSockets for real-time interaction between instructors and students during polling sessions.</li>
<li><strong>Caching</strong>: Redis for caching frequently accessed data, improving performance and reducing latency.</li>
<li><strong>Containerization and Orchestration</strong>: Docker for containerization, ensuring consistent environments across development and production. Docker Swarm for orchestrating multi-container applications.</li>
<li><strong>Deployment</strong>: AWS Lightsail for hosting the application, ensuring high availability and performance.</li>
</p>
<h2>Architecture Overview</h2>
<p>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:</p>
<figure>
<img id="system-architecture-diagram" src="images/systemArchitectureDiagram.png" alt="Architecture Diagram" />
<figcaption><strong>Figure 2.</strong> System architecture showing frontend, backend, and database layers under Docker Swarm orchestration.</figcaption>
</figure>
<p>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.</p>
<h2>Development Challenges and Solutions</h2>
<p>
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.<br><br>
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.
</p>
<h1>Documentation and Support</h1>
<h2>Where to Find Help</h2>
<p>Installation instructions and developer documentation is available in the project's <a href="https://github.com/OSU-MC/Open-Response/blob/dev/README.md">README.md</a> and at the <a href="https://github.com/OSU-MC/Open-Response/wiki">Open-Response Wiki</a>. 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.
</p>
<h2>Accessing and Running the Project</h2>
To install and run the project locally for development, follow the steps on the project's GitHub Repository <a href="https://github.com/OSU-MC/Open-Response/blob/development/README.md">README.md</a>. 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. <br><br> For more information on deploying the project, please refer to the project's <a href="https://github.com/OSU-MC/Open-Response/blob/development/DEPLOYMENT.md">DEPLOYMENT.md</a> 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.
<h3>Installation Requirements</h3>
<p>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 <a href="https://learn.microsoft.com/en-us/windows/wsl/install">WSL2</a> if on a Windows environment.</p>
<ul>
<li>Docker</li>
<li>Docker Compose</li>
<li>Node.js</li>
<li>MySQL</li>
<li>Redis</li>
<h2>Repository/Contact Information</h2>
<p>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 <a href="https://github.com/OSU-MC/Open-Response/issues">GitHub Issue</a> or open a <a href="https://github.com/OSU-MC/Open-Response/discussions">Discussion</a>.</p>
<h1>Learn More</h1>
<p>To learn more about the project, its goals, and future developments, visit our <a href="https://github.com/OSU-MC/Open-Response">GitHub Repository</a> or reach out using the methods above.</p>
</section>
<aside id="sidebar">
<a href="https://github.com/OSU-MC/Open-Response/releases/latest" class="button">
<small>Latest Release</small>
Download
</a>
<h1>Contributors and Project Alumni</h1>
<h2>Author</h2>
<p><a href="https://physics.oregonstate.edu/directory/evan-m-thatcher">Evan Thatcher</a><br>thatchee@oregonstate.edu</p>
<h2>Contributors</h2>
<h3>2025-2026</h3>
<p><a href="https://github.com/MigrainePanda">Nicholas Tanaka</a><br>tanakan@oregonstate.edu</p>
<p><a href="https://github.com/thaivinhle">Thai Le</a><br>lethai@oregonstate.edu</p>
<p><a href="https://github.com/LaserBread">Ethan Jones</a><br>joneset3@oregonstate.edu</p>
<p><a href="https://github.com/GHop95">Grant Hopkin</a><br>hopking@oregonstate.edu</p>
<h3>2024-2025</h3>
<p><a href="https://github.com/n8srumsey">Nathan Rumsey</a><br>rumseyn@oregonstate.edu</p>
<p><a href="https://github.com/baumannevan">Evan Baunman</a><br>baumanne@oregonstate.edu</p>
<p><a href="https://github.com/enjiwood">Nathaniel Wood</a><br>woodnath@oregonstate.edu</p>
<p><a href="https://github.com/sgoober">Sean Gibson</a><br>gibsosea@oregonstate.edu</p>
<p><a href="https://github.com/Sage-m">Sage Morgillo</a><br>morgills@oregonstate.edu</p>
<p><a href="https://github.com/SonnySideUp37">Tran Cong Son Nguyen</a><br>nguytra6@oregonstate.edu</p>
<h3>2023-2024</h3>
<p><a href="https://github.com/nilsstreedain">Nils Streedain</a><br>streedan@oregonstate.edu</p>
<p><a href="https://github.com/Justin-Fernbaugh">Justin Fernbaugh</a><br>fernbauj@oregonstate.edu</p>
<p><a href="https://github.com/karinocheretny">Karin Ocheretny</a><br>ocheretk@oregonstate.edu</p>
<p><a href="https://github.com/Durbin-Elijah">Elijah Durbin</a><br>durbine@oregonstate.edu</p>
<h3>2022-2023</h3>
<p><a href="https://github.com/mphotchkiss">Matthew Hotchkiss</a><br>hotchkma@oregonstate.edu</p>
<p><a href="https://github.com/METrimble">Elayne Trimble</a><br>trimblma@oregonstate.edu</p>
<p><a href="https://github.com/mitchellstewart7">Mitchell Stewart</a><br>stewamit@oregonstate.edu</p>
<p><a href="https://github.com/gavenrobertson">Gaven Robertson</a><br>robergav@oregonstate.edu</p>
<p><a href="https://github.com/sonjak7">Sanjay Ramanathan</a><br>ramanasa@oregonstate.edu</p>
<h3>2021-2022</h3>
<p><a>Linshengyi Sun</a><br></p>
<p><a>Aaron Kaho Au</a><br></p>
<p><a>Cameron James O'Brien</a><br></p>
<p><a>Matthew R Hawkins</a><br></p>
<p><a>Maxime Roger Desmet Vanden Stock</a><br></p>
<p><a>Oyebolaji Akinyemi</a><br></p>
<small>This page was generated by <a href="https://pages.github.com">GitHub Pages</a> using the Architect theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.</small>
</aside>
</div>
</div>
</body>
</html>