Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

48 Commits

Folders and files

Repository files navigation

OST Uploader

A Windows desktop utility for importing UltraTracker CSV timing data into an OpenSplitTime event. It reads event metadata from a packaged event ZIP, maps station names to OST split names, and uploads the resulting JSON payload to the selected OST environment.

Requires a valid OST account with access to the target event and event-level permissions that allow data uploads.

image

Overview

The app is intended for the common workflow used by the Bridgerland Amateur Radio Club:

  1. Load the event ZIP provided for the race.
  2. Select the correct OST site from the event metadata.
  3. Authenticate to OpenSplitTime.
  4. Load the UltraTracker CSV export.
  5. Review the imported rows for validity, flag duplicate and did-not-start records.
  6. Upload the validated data.

The tool is a Windows WPF application and is built for Windows 10/11.

Requirements

  • Windows 10 or Windows 11
  • .NET 10 SDK for building the project locally
  • A valid OST account with Steward-level access to the event
  • An event ZIP file from UltraTracker/OST containing a stations.json file at the root
  • A CSV export generated by UltraTracker in the expected format

Event file requirements

Refer to the Ultra-Tracker Event File Creation documentation.

For most users, this file will be prepared by your event organizers.

This project expects event packages to be a single ZIP file containing stations.json from which it reads the OST connection metadata for your event.

If the event metadata includes a staging site, the app prefers staging by default to use for testing.

If the event ZIP is missing stations.json or the event.openSplitTime block is not present, the app will not allow authentication because it cannot determine the target OST environment.

Installation

  1. Download the latest release for Windows from the Releases page.
  2. Extract the files to a local folder.
  3. Run the executable.
  4. If prompted by Microsoft Defender SmartScreen click More Info and then click Run Anyway.

First-time workflow

1. Load the event file

From the main window:

  • Click Browse Event File.
  • Select the ZIP file for the event.
  • The app will inspect stations.json and populate the OST site choices.

When a valid event file is loaded, the UI enables authentication and makes the OST site selector available.

2. Select the OST environment

The app shows the available OST locations based on the event metadata, typically:

A confirmation prompt appears before switching to a production URL because live uploads are sent there.

3. Authenticate

Credentials for the OST staging site and Production site are unique, you must be assigned as a steward in the corresponding site. If you create your account using the Google or Facebook logins, you must then use the Forgot your password? link to create a password. Your OST admin will need to add your account as a steward.

Enter the OST email and password, then click Login.

CSV import workflow will be enabled only after authentication succeeds.

You may optionally check Save credentials to store the token securely for future sessions.

CSV import requirements

Import files must be a valid UltraTracker CSV export file. The app validates the file before upload.

The app maps the station token from the CSV to the OST split name using the event metadata splitNames mapping. If a station is not present in the event data, the upload is rejected.

Loading and reviewing times

  1. Click Load File.
  2. Select the UltraTracker CSV.
  3. The app loads the rows into the grid.
  4. Duplicate and did-not-start rows are highlighted in yellow and are excluded from upload.
  5. Rows with unknown participant bibId's will be uploaded, but will not be matched to an participant.
  6. The records summary shows the total number of rows and duplicate count.

Uploading data

When the CSV has loaded successfully:

  • Verify the event, station, and export type displayed in the top section
  • Confirm the OST site selector is pointing at the correct OST environment.
  • Click Upload Data

The app sends the generated payload to the selected OST API endpoint and reports the result in the status bar and message dialogs.

Before uploading to the OST Production site, confirm the corrent event name. Raw times uploaded to the Production site are linked to real athletes and their accounts.

Security notes

  • Saved authentication tokens are stored securely through the app’s credential store rather than plain text.
  • Credentials are only reused for the matching OST base URL.
  • The app clears saved credentials when the user does not choose to save them.

Troubleshooting

Event file missing OST metadata

Symptoms:

  • Site selector is disabled
  • Authentication controls remain disabled
  • The status says the event file is missing OST metadata

Fix:

  • Use a valid event ZIP that contains stations.json with event.openSplitTime.production
  • Ensure the metadata is not truncated or malformed

Station not found

Symptoms:

  • The app shows a message that the station was not found in event metadata

Fix:

  • Confirm the CSV station identifier matches the event’s configured station names
  • Recheck the selected event file

Authentication fails

Symptoms:

  • Login returns a failure
  • The status shows “Not Authenticated” or “Authentication Failed”

Fix:

  • Confirm the OST email and password are correct
  • Ensure the selected site matches the environment for the event
  • Verify that the event file metadata points to the correct OST instance

CSV is rejected

Symptoms:

  • Header does not contain the expected fields
  • Invalid bib numbers are reported
  • Export type is not accepted

Fix:

  • Use a standard UltraTracker export file
  • Ensure the header contains the expected three fields
  • Remove or correct invalid bib values before upload

Development

Run the full test suite:

dotnet test ost-uploader.sln

Build the app:

dotnet build ost-uploader.sln

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages