Vision Test Web App

Job ID: 35903138

Budget: $10 – $30 USD

The purpose of this application is to test how far and how small objects can the user see.
It is a web application and is used by two devices at once: PC and phone. PC will display the letters that you have to recognize from afar and the phone is used to submit your answers (because you stand away from PC screen for 3-4 meters while doing the test).

A similar system already exists (DigiVis) but is not open to everyone:
https://cobaltgrid.com/static/5dd997d393f3eba5b7f1a87daa01f059/feature.png

Pages of the application:
1. Login/Register screen:
User logs in with email and password or registers a new account
2. Welcome screen (for PC):
- Here the user will choose the distance (in meters) he will be standing away from the screen and clicks "Start" button to start the test.
- At the bottom, it shows the historical records chart (if there are any records):
- x-axis displays date, y-axis displays distance divided by minimum font size the user was able to read during the test that day. If multiple tests recorded in the same day, then average.
3. Welcome screen (for Android):
- If the user has launched a test on PC:
- it will show display 5 letter choices, asking the user what he sees on PC screen
- If no test has been launched, will just show a message: "You have not launched a test yet"
4. Test screen(PC):
- Displays letters like in the photo https://cobaltgrid.com/static/5dd997d393f3eba5b7f1a87daa01f059/feature.png
- Initial font size is set to 10 cm (I will provide you with the correct formula for how to convert cm to pixels);
- Waits until it receives answer from the user through their phone
- Moves to the next test case
- If the answer was correct, it multiplies the font size by 0.5
- If the answer was not correct, it sets the font size to (current_font_size + previous_font_size) / 2
- If the font size has not changed more than 5%, ends the test. Otherwise it generates the new test case moves to it.
- When the test ends meeting the condition described above, it will automatically show the "Result"
- The result is just a number: the smalles font size at which the user correctly read the letter on the screen.
- Alongside the result, it will show a button to "Discard this Result" or "Jump to Records Chart".

Technical requirements:
1. Use any javascript framework for frontend, preferably Svelte if you have experience with it.
2. The backend should be in Flask (Python).
3. Simplistic and appealing design; not too much styling.
Related categories: JavaScript Web Application