Evaluace

Web application developed to evaluate teachers and their lectures by students.

Introduction

Evaluation is a web application used by several faculties of Charles University to evaluate teachers and their lectures by students. The app aggregates information from various data sources and has heavy usage spikes when the evaluation begins. It should also provide maximum anonymity for students if they want to stay anonymous, but also ensure that only students from a given faculty can evaluate. The gathered results serve not only as an information for the dean and vice-deans of the faculty, but also for teachers and students as a form of feedback.


The publicly accesible list of results in the appliationThe publicly accesible list of results in the appliation

Assignment and requests

Initially I was asked to upgrade the existing application from PHP5.x to PHP7.x and add a new functionality to it. However, the application was developed in early 2000's and the code was very obsolete in 2014. The user interface had a similar problem, some nice 2000's aesthetic but was almost unusable on other devices than computers.


The in-app email clientThe in-app email client

Solution

The initial idea of upgrading the existing app was scratched very early as I realised that upgrading the very old undocumented codebase from PHP5.x to PHP7.x could take more time than developing a new app. So I came up with a proposal of developing a new app using Laravel framework. Thanks to Laravel I was able to focus more on transferring required functionalities and introducing new ones instead of building the whole application again. Laravel also provides basic security layers and has relatively easy upgrade process of the core. The next step was to decide whether to have an API for separated front-end or render pages directly from Laravel.

Due to possible complexity of things I decided to decouple the front-end from back-end and thus back-end provides only API. Front-end was completely written in JavaScript framework Vue.js. This allowed me to deconstruct the UI into small isolated components which then could be easily reused across the application. JavaScript front-end also brought various benefits like easier implementation of auto-save or more importantly show real-time data. There are several drawbacks as the application is not server-side rendered and thus not indexed, however in this context it is not important. Separation of front-end and back-end also ensures easier replaceability of one or the other.

The application follows a previously established scheme with blue and white colours. However, it was slightly modified to make it feel modern. The layout was not significantly changed as well. The layout wasn't changed to create a feeling of continuity between the old and new applications, thus only a sidebar with shortcuts to the most used parts of the application was introduced.