QuickFeed is a software project developed at the University of Stavanger, now as a collaborative effort. QuickFeed provides automated testing of hand-in code and gives students rapid feedback with the results of the tests. The way QuickFeed reduces the time between hand-in and received feedback on submitted code, let students make modifications to their solutions, and improve their learning outcome.
The current implementation of QuickFeed's frontend has some issues. The core of many of these issues is related to its lack of ability to retain data and to do so in an organized manner. This fundamental lack of data retention and structure materializes in several forms. First, the user interface implementation suffers by having to pass data across multiple components, causing complexity in the codebase. Second, the inability to retain data cause navigating throughout the user interface to always trigger data fetches from the backend server. This results in redundant fetching of data. Finally, the added complexity increases the strain involved in maintaining and extending the application.
In this thesis, we demonstrate how QuickFeed can be improved by introducing the ability to retain and organize data in a centralized store through the use of a state manager. State management is a proposed means of reducing the complexity of components in an application by separating data from the components. State managers offer a single shared source of truth that an application can utilize to synchronize its components while also reducing the complexity of its implementation. Adding a state manager to QuickFeed offers several advantages to the current implementation. One is that we can reduce redundant data fetches by verifying and reusing the data if it already exists. Another is that having all your state and related logic separate from components simplifies adding new functionality and maintaining the application.