Skip to content

JPDoesDev/visiontrax

Repository files navigation

VisionTrax

A Windows desktop application for self-administered BCVA (Best Corrected Visual Acuity) eye chart testing. Displays randomized Sloan letter charts using the Optician Sans font, tracks visual acuity over time for each eye, and exports results to CSV.

Disclaimer: VisionTrax is not medical software. It is not intended to diagnose, treat, or replace a professional eye examination. Acuity measurements from this application should not be considered clinically accurate or used for medical decision-making. VisionTrax is designed as a personal trend-tracking tool to help you observe general changes in your visual acuity over time. Always consult a qualified eye care professional for diagnosis, prescriptions, and treatment.

Requirements

  • Windows 10/11
  • .NET 10.0 SDK

Build and Run

dotnet build
dotnet run

For a release build:

dotnet build -c Release

The compiled output will be in bin/Release/net10.0-windows/.

First Launch

On first launch, the calibration screen opens automatically. A large letter "H" is displayed on screen. Use a physical ruler to measure the letter and adjust its size with the up/down buttons (or arrow keys) until it is exactly 2 inches tall. Click Done to save the calibration. This ensures letter sizes are accurate on your display.

The calibration is saved to settings.txt in the application directory and persists between sessions. You can recalibrate at any time using the Calibrate button.

Viewing Distance

This application is designed to be used at a 5-foot viewing distance from the screen. Position yourself 5 feet away from your display for accurate measurements. The letter sizes are calibrated for this distance.

Controls

Eye Selection

Use the Left Eye / Right Eye buttons at the top of the screen to indicate which eye is being tested. Results are tracked separately per eye.

Keyboard

Key Action
Up Arrow Increase letter size (worse acuity line)
Down Arrow Decrease letter size (better acuity line)
Right Arrow Generate new random letters at current line
Left Arrow Go back to previous letters at current line
Space Read current letters aloud
Enter Record current line as correctly read
Backspace Record current line as incorrectly read
Esc Exit application

Gamepad (Optional)

An XInput-compatible gamepad (e.g., Xbox controller) can be used. If no controller is connected, it is silently ignored.

Button Action
D-Pad Up Increase letter size (worse acuity line)
D-Pad Down Decrease letter size (better acuity line)
D-Pad Right Generate new random letters at current line
D-Pad Left Go back to previous letters at current line
Y Read current letters aloud
A Record current line as correctly read
B Record current line as incorrectly read

Audio Feedback

  • Correct (Enter / A): A rising two-tone chime
  • Incorrect (Backspace / B): A low tone
  • Read aloud (Space / Y): Letters are spelled out one at a time using text-to-speech

Acuity Lines

The application displays 22 standard LogMAR acuity levels ranging from 20/10 (LogMAR -0.3) to 20/1250 (LogMAR 1.8). Each line shows 5 random Sloan letters (C D H K N O R S V Z) with no repeats. The default starting line is 20/200 (LogMAR 1.0).

Recording Results

Press Enter (or A on gamepad) when you read a line correctly, or Backspace (or B on gamepad) when you read it incorrectly. Each result is saved to results.json with a timestamp, the acuity level, letters shown, selected eye, and calibration factor.

Comments

Each result record includes a Comment field that defaults to empty. You can manually edit results.json to add comments to any result entry (e.g., noting conditions like "with new glasses" or "tired eyes"). Comments appear as labels on the results chart next to their data points.

Viewing Progress

Click See Results to view line charts of your best correct acuity per day, shown separately for each eye. The Y axis auto-scales to fit your data with better vision at the top and worse vision at the bottom. The X axis labels adjust based on your data's time range (daily, weekly, monthly, or quarterly). Data points with comments display as yellow labels on the chart.

Exporting Data

Click Save CSV on the results page to export your data. The CSV includes columns for date, Snellen acuity, LogMAR value, and comments for both left and right eyes.

Data Files

All data files are stored in the application directory alongside the executable:

File Description
settings.txt Display calibration scaling factor
results.json Test result history (JSON array)
visiontrax.log Debug log

License

See LICENSE for details.

About

Vision acuity trend tracker

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages