Picto is a system developed for Galantucci-style language workshops aimed at school children. The study aimed to measure the children's ability to create and learn an abstract language.
Participants are divided into ordered pairs consisting of a Speaker
and a Listener
. The Speaker
must communicate the selected image to the Listener
using symbols provided. The Listener
must then choose the image being communicated based on the symbols chosen by the Speaker
.
The aim of the game is to have as many correct answers as possible.
The experiment aimed to measure cognitive capacity for creating and learning an abstract new language during the period of most rapid brain development. An article detailing the system's workings and study results is forthcoming.
- Customizable image and symbol selection
- Parametrized topology generation
- Admin panel with complete control over each game
- Multiple independent games can be played simultaneously
API reference is available at /swagger-ui.html
To deploy this project run
docker compose up
To run this project, you will need to add the following environment variables to your .env file
PICTO_DB_HOST
PICTO_DB_PORT
PICTO_DB_NAME
PICTO_DB_USER
PICTO_DB_PASSWORD
PICTO_JWT_SECRET
SPRING_PROFILES_ACTIVE
To run tests, run the following command
mvn clean test
As of now, in certain cases, events sent by the SSE are blocked by adblockers (e.g. in Firefox), causing the entire application to stop working. To work around this, we recommend using Chromium-based web browsers when interacting with the application through its frontend. A complete rewrite of this application based solely on websockets is in the works to mitigate the problem.
Since Picto started as an internal project for a specific frontend, there aren't as many data validation mechanisms as needed to make it work on its own. We are aware of this and are actively working on improving the project.
Frontend: github.com/skni-umcs/picto-front
-
Migration from Sever Sent Events to Websockets
-
Implement Data Transfer Object design pattern
-
Improve hardening, in particular add data validation for all imputs
-
Improve summary generation (don't include generations, which are not full, etc.)