Skip to content
dextreem edited this page Jul 19, 2018 · 4 revisions

Welcome to the wiki page of the tagging platform

Here, you can find some information about the platform and how to install it.

What is the Tagging Platform?

The tagging is a platform where users are confronted with several abstract images, having the task to describe the mood/atmosphere in the image. From a technical point of view, the platform consists of a back-end (the so called API) and a front-end. Both can be found in the repository under the code folder. While the platform is highly inspired by a similar platform (https://github.com/psyflo/tagem), the technical foundation differs completely, allowing the platform to be more flexible and easier to adjust.

Back-End (API)

The back-end is written in Java and communicates with the front-end through (secured) WebSockets. It supports several commands that will get explained here:

  • REGISTER: Registers a new user and assigns a random group (i.e., none, top-down, or design task). This is used by the front-end when a participant approaches the website for the first time. The concept of having users allows the API to properly distinguish between participants, knowing which part of the study he currently works on. Normally, after receiving a positive answer for a REGISTER command, the front-end can proceed by logging in the freshly created user.
  • LOGIN: Logs in an existing user. If the participant already has an user account, the front-end only needs to log him in using the respective credentials. After a successful login (i.e., the user's credentials are valid) the front-end can continue where the user stopped the last time.
  • LOGOUT: This message indicates the server that a client wants to log out.
  • QUESTIONNAIRE: On the one hand, this command allows the front-end to ask for questionnaires, and, on the other hand, to send answered ones back to the server to store them.
  • GET: This command queries a new image from the server. At this point, it is ensured that each user gets each image only once, preventing the participants from cheating by requiring the image multiple times. Furthermore, a new image can only get queried if the server received tags for the previous one.
  • POST: The front-end can use this command to send tags created by the participant to the server for storage purposes. Every tag gets accepted, i.e., there is no word filtering or similar.
  • COMMAND: This is used to execute custom commands that are defined in the data storage, i.e., not in the API itself. If the command exists in the data store and the user is allowed to execute this command (through group assignment), the command gets executed. Such custom commands are separated from the API on purpose, since it allows to create new commands without the need to restart or even recompile the API.

The back-end relies on a so called DataStore. Technically spoken, this is a Java interface providing methods to store and access the data needed. A reference implementation of this uses MySQL as data grave (see here) but in general, you can implement it the way you want.

Front-End

The front-end is a pure html/js/css website, using the provided WebSockets to communicate with the back-end. This is a reference implementation, and, as long as you follow the WebSockets protocol, you can build the front-end based on what ever you like, i.e., a full application that is not web-based.

QuestionnaireAnalyzer

The questionnaire analyzer is used to - as the name suggests - extract the answers of the single questions of each respective questionnaire: design, big_five, demographics_normal, demographics_design, end_normal, and end_design. It is a simple HTML side where you can upload your questionnaires, select the questionnaire type and press "start". Results are shown in the window below and can get downloaded as .csv files. "|" is configured to be the column separator.

TagJudge

A tool that is used to rate tags created by participants. Please note that there is a special format needed and there is not that much documentation in the code for this certain part of the software (lack of time). Nevertheless, the "help page" as written in the Main file is a good starting point. If there is anything left, please contact me.

How to get a copy and more information

  • Get a build environment: click
  • Setup a server: click
  • Useful hints: click
  • Where do I find what: click