apnea-comp-manual

Apnea Comp — User Manual

AIDA Competition Management System

This manual covers running an apnea competition with Apnea Comp from setup to results. The in-app Help (More → Help) is a quick reference; this document goes deeper, with operational scenarios and troubleshooting.

If you only have five minutes, read Quick Start below and the FAQ at the bottom.


Contents

  1. Before you start
  2. Quick Start
  3. Roles and what each can do
  4. Creating an event (Organizer)
  5. Joining an event (Staff)
  6. Joining as an athlete
  7. Setup: athletes, lines, and OTs
  8. Break Times
  9. Team competitions
  10. Check-in
  11. Start List & Speaker Mode
  12. Judging results
  13. Penalties (Rulebook 17.8)
  14. Protests
  15. Re-swim & Opener
  16. Schedule adjustments (OT Delay)
  17. Push notifications
  18. Offline operation
  19. AIDA integration
  20. Multi-day events
  21. Results and export
  22. Display & Language
  23. FAQ
  24. Troubleshooting
  25. Privacy & Data
  26. Contact

Before you start

You will need:

We recommend each judge / staff member uses their own device. The app supports several people working on the same event simultaneously — results sync between devices in real time.


Quick Start

For the Organizer (event creator)

  1. Open the app, tap + on the Events screen.
  2. Enter event name, type (Pool / Depth / Team), dates, and tap Create.
  3. Open the event → Edit Event → paste AIDA Token and AIDA Event ID → tap Test Connection → Save.
  4. Setup tab → Load Athletes to pull the start list from AIDA.
  5. Setup tab → set Lines (number of lanes), First OT, and Interval between athletes.
  6. Share the event invite code (visible in Edit Event) with your staff.
  7. Approve staff in Users tab as they join (they appear as Pending).

For Staff (judges, check-in officials, …)

  1. Open the app, sign in.
    Tip: tick Remember email to pre-fill your email next time. You can also tick Remember password — the password is then kept in your device’s secure keystore (iOS Keychain / Android EncryptedSharedPreferences), never on our servers. Sign out to clear both.
  2. Events screen → tap Join with code → paste the invite code.
  3. You appear as Pending until the Organizer approves you and assigns a role (Judge, Main Judge, Staff, …).

For Athletes

  1. Open the app, sign up with your email.
  2. Choose I am an athlete during signup.
  3. The app tries to match your name to AIDA’s start lists automatically.
  4. If matched, your registered events appear immediately. If your name has duplicates, ask the Organizer for a one-time invite code.

You are now ready to run the day.


Roles and what each can do

Role Setup Judge Check-in Users Log OT Delay Send Push
👑 Organizer
⚖️ Main Judge
✏️ Judge
👀 Staff view
🏊 Athlete
⏳ Pending

Creating an event (Organizer)

Basic info

Open the event → Edit Event → fill:

Tap Test Connection. A green checkmark means the credentials are valid and the app can read the start list. Save.

Edit Event screen with AIDA fields

If you leave these blank or set the token to test or demo, the app runs in 🧪 Mock mode — it generates sample athletes for practice. Mock mode does not send anything to AIDA.

Inviting your staff

The invite code is shown in Edit Event. Share it via your usual channel (chat, email, paper). Staff use Join with code on the Events screen to enter the code.

Tip: rotating the invite code is not yet supported. Treat it like a password and only share with people who should be on the team.


Joining an event (Staff)

  1. Sign in to the app.
  2. On the Events screen, tap Join with code.
  3. Paste the code. The event appears in your list with status Pending.
  4. Wait for the Organizer to approve you and assign a role. You will see the event become tappable once approved.

If you accidentally use the wrong code, ask the Organizer to remove you from Users so you can try again.


Joining as an athlete

If you are competing rather than running the event, sign up as an athlete to see your start list, OT, line, and personal results.

You can switch between staff and athlete views at any time: tap your avatar (top-right) → Switch to Athlete Mode (and back the same way).

How it works

When you sign up, the app reads your name and tries to match it to athletes that organizers have already loaded into the app from AIDA. If exactly one match is found, your account is linked automatically. Otherwise, the organizer can issue a one-time invite code.

Path A — Automatic matching (most cases)

  1. Sign up with your email.
  2. Choose I am an athlete.
  3. Enter your first name, last name, gender, and nationality, exactly as registered with AIDA.
  4. The app searches loaded events. If your name matches a single athlete and the gender/nationality agree, you are linked immediately.
  5. The Events screen now shows the events you appear in. Tap one to see your start list and (later) your results.

Path B — Invite code (when names collide)

If two athletes share the same name, automatic matching cannot decide which one is you. Ask the Organizer for an invite code:

  1. The Organizer opens the event → Athlete Invite Codes → finds your name in the list → taps it to generate a 6-character code.
  2. The Organizer sends you the code privately.
  3. You open the app → Events → Enter invite code → paste it.
  4. The app verifies the code and links your account.

Broadcast (activation) code — the quickest way to join

The Organizer can turn on a single broadcast code (shown as the Athlete code) that any athlete can use to join the event directly — useful when there is no AIDA start list yet, or for athletes who are not on it.

Organizer: open the event → Setup → tap the green + next to Athlete code to generate it, then copy and share it (chat, paper, projector). Tap the power icon to turn it off at any time.

Athlete: open the app → Events → Enter code → paste the broadcast code. Once joined you can view the start list and results and submit your documents.

Setup — Athlete (broadcast) code

Find me on AIDA

Find me on AIDA search

If automatic matching does not find you, you can link your AIDA athlete profile by hand. In Edit Profile or Athlete Setup, tap Find me on AIDA, type your name, and pick your profile from the results. This stores your AIDA athlete ID so your results match correctly. The 🔄 sync icon also pulls in events you are registered for. (Athletes with no competition history may not appear in search — in that case enter your name, nationality, and gender manually, exactly as registered with AIDA.)

What you can see

Athlete Mode has four tabs: My Info, Start List, Results, and Rewards (past events show three — no Start List).

You cannot see other athletes’ personal information, judges’ notes, or AIDA tokens.

Push notifications

If you allow notifications, you receive:

Notification text arrives in your chosen app language. You can turn notifications off at any time in your device’s system settings or in the app’s About screen.


Many events require athletes to submit AIDA consent forms before competing. Open My Info → Documents.

For staff (Organizer / Main Judge): open More → Documents to review each athlete’s submission status, open files, and download everything as a ZIP (folders by document type). When an athlete declares an injury or black-out, the medical statement is flagged for manual verification — confirm the certificate in person, then tap Mark verified. Submitted documents are kept for 15 days after the event, then deleted.

Athlete — My Info → Documents

Fill in app and sign

Medical Statement saved on profile

Staff — Documents status & manual-check

Staff — verify medical statement

Setup: athletes, lines, and OTs

Setup screen layout

Setup is where you decide the schedule for the day: which line each athlete swims on, when their OT (official time) is, and what breaks happen during the day.

Auto-save — every change you make in Setup is saved to the server automatically. If you leave the app and come back, your settings are restored. If a co-organizer reloads athletes from AIDA, the schedule still respects your line configuration.

Loading athletes

Configuring lines and OTs (basic)

Advanced Setup (optional, collapsible)

Advanced Setup collapsed Advanced Setup expanded

Tap Advanced Setup to expand more options for fine-grained control:

Line assignment

After loading athletes, open Assign Lines to move them between lines and reorder. OTs are recalculated automatically:

Direct line assignment — for special cases (e.g. a specific line reserved for a national record attempt, or placing a re-swim — see Re-swim & Opener), tap an athlete, then tap the target line and position. The schedule re-flows to honour your choice.

Save when done — start times are now finalised for the day.


Break Times

Breaks pause the schedule for a fixed window. The app supports two kinds of breaks.

Time-based break (Lunch Break, etc.)

Time-based break in Setup

Use this for fixed-time breaks that everyone agrees on in advance (lunch, ceremony, etc.):

  1. Open Setup → BREAK TIMESAdd Break Time.
  2. Choose Time-based.
  3. Enter the start time and end time (e.g. 12:0013:00).
  4. Save.

Any athletes whose OT falls inside the break window are pushed back so their OT lands after the break ends. The lane assignment is preserved.

After Athlete break (NEW in Build 48)

After Athlete break being added After Athlete break listed

Use this when you need to insert a break after a specific athlete finishes, regardless of clock time. Typical scenario: the warm-up athletes finish, you want a 60-minute rest before the official athletes start.

  1. Open Setup → BREAK TIMESAdd Break Time.
  2. Choose After Athlete.
  3. Pick the athlete who marks the end of the segment.
  4. Enter the break duration (e.g. 60 minutes).
  5. Save.

The selected athlete plus every athlete after them in the start list order is shifted by the break duration. Other disciplines (athletes earlier in the order, even at the same clock time) are not affected. Lane assignment is preserved.

To remove a break, tap the 🗑️ trash icon next to it in the BREAK TIMES list.


Team competitions

Team events (event type Team) group athletes into teams whose combined scores decide the standings. A Teams section appears in Setup — only for Team-type events.

Teams section in Setup

Creating and editing teams

Tap New Team to open the team editor.

Team editor — name, color, members

Each team card shows its name, colour, and member count. Tap a card to edit, or use its menu to delete it.

An athlete who competes on more than one day appears once — selecting them assigns all of their day entries to the team, so you pick each person only once.


Check-in

Athletes sign in before warm-up. Open the Check-in tab.

The signature drawing is for visual confirmation only — it is shown to the staff member at the moment of check-in and discarded as soon as the sheet closes. We do not store the signature image anywhere (not on the server, not on the device). Only the fact that a signature was captured is recorded, along with the check-in time.

Check-in works offline too. If the device is offline when you confirm, the check-in is held in device memory with a small ⛔ “Offline” badge on the card, and synced to the server automatically within 5 seconds of reconnecting. See Offline operation.


Start List & Speaker Mode

Start List screen with countdown

The Start List tab shows the day’s running order with a live countdown to the next athlete’s OT. As each OT approaches, the app speaks the countdown aloud so athletes and judges hear it without watching the screen.

Voice countdown

As each OT approaches, the app plays spoken cues so athletes and judges hear the count without watching the screen. The cues are pre-recorded audio files, so they sound identical on iOS and Android (earlier versions used each phone’s built-in text-to-speech, which differed between devices).

Cues before OT: 2:00 (“two minutes to official top”), 1:30, 1:00, 0:30, 0:20, 0:10, then 5 — 4 — 3 — 2 — 1, and at OT: “official top”.

Cues during the start window (after OT): “plus one” at +1 s, then the elapsed seconds are called as the window runs out — up to the discipline’s limit — ending with “start cancelled” if the athlete has not started by the end of the window.

Voice Announce

The automatic countdown above is tied to each OT. For a one-off manual announcement, tap the Announce button on the Start List. Enter how many minutes before OT you want to call, and the device speaks “N minutes to Official Top” once, using the device’s text-to-speech.

This is separate from the automatic countdown cues — it is a single spoken announcement you trigger by hand. It speaks in the device language (English, 한국어, 日本語, 简体中文, or 繁體中文).

Mute button

Mute toggle on Start List

Tap the 🔊 / 🔇 icon in the AppBar to toggle voice announcements. Useful when:

Mute applies only to the device you toggle it on — other devices in the same event keep speaking. The visual countdown keeps running regardless.

Speaker Mode

Speaker Mode active

Speaker Mode turns the device into a dedicated countdown announcer — perfect for the venue’s main loudspeaker. Once enabled:

Keeps speaking in the background. In Speaker Mode the voice — both the countdown cues and the manual Announce — keeps playing even when the app is sent to the background or the screen is locked. On iOS this is held open by a silent keep-alive track; on Android by a foreground-service notification (“Start list countdown active”). So the venue loudspeaker keeps announcing even if the phone locks itself. This applies in Speaker Mode only.

To enable: open the role / profile menu → Speaker Mode → set a 4-digit PIN.

To exit: tap the Speaker Mode badge → enter the PIN → confirm.

Recommended setup: a dedicated phone or tablet plugged into the venue’s audio system, in Speaker Mode for the entire competition day. Keep it on a charger — voice playback drains the battery faster than passive idle.

Screen always on

The app keeps the screen awake on every screen, not only Start List, so countdowns and notifications work even if you don’t touch the device. This is a global setting — it applies as soon as you open the app. Note: keep the device plugged in for full-day events; the battery will drain faster than normal.


Judging results

Judge tab with athlete cards

The Judge tab shows all athletes for the current day. Tap a card to enter the result.

Entering a result

  1. RP — realised performance (time for static, distance for dynamic, depth for depth).
  2. Card — White (clean), Yellow (penalty), or Red (DQ).
  3. Penalty reasons — required when a card other than White is selected. See Penalties.
  4. Start offset — seconds early (negative) or late (positive). Used for the start-window penalty calculation.
  5. REMARKS — required for certain reasons (BO, Other Penalty, DQ Other, etc.). The app pre-fills a template; complete the missing detail.
  6. Tap Save Result.

Card badges

After saving you will see a small badge on the athlete card:

If no badge is shown, AIDA integration is not configured (no startId for that athlete) — that is normal in Mock mode.


Judge Calculator

To save the judge from working out a distance or a static average by hand, the Judge tab has small calculators built into the athlete detail sheet. They compute the RP for you and write it straight into the result.

Pool Length

Distance calculations need to know how long the pool is. Set it once in the event Setup as Pool Length (m). It is available for Pool and Team event types only — Depth events do not have it. Without a pool length the Distance Calc cannot run.

Distance Calc (DYN / DYNB / DNF)

For the dynamic disciplines, open the athlete in Judge → detail sheet → tap the 📏 ruler button.

  1. Enter the number of completed laps.
  2. Enter the partial distance (m) of the final, incomplete lap.
  3. The result = laps × Pool Length + partial distance.
  4. Tap Fill RP to write the total into the RP field.

STA Average Calc (STA)

For static, tap the ⏱ timer button in the detail sheet. Enter the time measured by each of the two judges (mm:ss). The app averages them (rounded to the nearest whole second) and Fill RP writes the average into the RP field.

Notes


Penalties (Rulebook 17.8)

The app follows AIDA Rulebook section 17.8. Reasons are grouped by card colour.

🟨 Yellow card reasons

🟥 Red card reasons

Start window

Discipline Window Within window Past window
Pool ±10 s 1 pt / 5 s (Yellow Early/Late Start) DQ Late Start (Red) for late side; Jump Start (Red, DYN only) for early-pool wall start
Depth ±30 s 1 pt / 5 s (Yellow Early/Late Start) DQ Late Start (Red) for late side

REMARKS

AIDA Rulebook 4.1.16.2 requires written reasons for every Yellow and Red. The Save button blocks the action if REMARKS is empty for a reason that requires it.

When you select a reason, the REMARKS field is pre-filled with a template (e.g. BO Surface, recovery: ___). Complete the missing detail before saving — this is the official record.

Multi-select and combined cards

Red card multi-select sheet

When you tap the Red card, the reason sheet shows both Red and Yellow reasons in two groups:

You can select multiple reasons across both groups in one save — for example Red Airways plus Yellow Under AP. Selected chips are colour-coded by category so you can see what is being recorded at a glance.

Yellow card on its own also supports multi-select (e.g. Early Start + Grab). Yellow cards do not show the Red group.


Protests

A protest is a formal challenge to a result, filed under AIDA Rulebook 17.8. Apnea Comp tracks the whole flow — filing, the athlete’s signature, the jury’s decision, and any change to the result.

Every protest ends with the athlete’s signature, even when a staff member starts it on the athlete’s behalf.

Who can file

Organizer, Main Judge, Judge, or the athlete. Fees are not tracked in the app.

Filing as an athlete

Athlete files a protest

  1. Athlete Mode → My Info → tap File Protest next to your result.
  2. Enter the reason, sign on screen, and submit.

Protest signature pad

The protest status becomes Pending — waiting for the jury.

Filing on behalf (staff)

  1. Judge tab → tap an athlete card → File Protest (on behalf).
  2. Enter the reason and submit. No signature yet.
  3. The protest goes to the athlete as Awaiting signature. The athlete opens My Info on their own phone, reviews it, and signs — only then does it become Pending.

Jury decision

Protest list

Open More → Protests (Organizer / Main Judge / Judge). The list groups protests by status (Awaiting signature / Pending / Reviewing / Accepted / Rejected / Withdrawn). Tap one to decide.

Protest decision screen

A protest cannot be decided while it is still Awaiting signature — the athlete must sign first.

Protest Voting

The jury decides by an anonymous vote. Each Judge and Main Judge casts Accept or Reject. The vote is anonymous — who voted which way is not shown, only the running tally of each side.

If the vote is tied, the Main Judge casts the deciding (casting) vote to break it. The final decision form still requires the jury’s signature before it is recorded.

Deleting a protest

Organizer or Main Judge can delete any protest from its detail screen (🗑 trash icon) — use this to clear a test entry, or a legacy protest that is stuck waiting for a signature that will never come.

Notifications

All staff and the affected athlete receive a push when a protest is filed, awaiting signature, or decided, in their chosen app language.


Re-swim & Opener

Re-swim

When a protest is accepted (or a judge calls for a re-performance), the athlete swims again. Because loading a day’s start list from AIDA replaces that day’s athletes, a re-swim is reserved in a queue first, then inserted when the target day’s list is built — so it is never wiped out by a reload.

Reserve a re-swim — choose the day

  1. Reserve — Judge / Main Judge / Organizer. Approve the re-swim while deciding the protest, or reserve it for a chosen day (pick the date from the day dropdown).
  2. Place — when that day’s start list is built or loaded, the app prompts: “N re-swim(s) to place.” Choose an automatic sort (AP ascending / descending / random) or place each athlete manually with Assign Lines (tap the athlete, then the target line and position). If the re-swim is on the day already loaded, you can place it immediately; otherwise there is a “Place pending re-swims” safety button under Setup → Add Athlete.

Place a re-swim into the start list

  1. Original excluded — the original entry is marked invalidated: excluded from rankings (Rewards) but still shown in Results. The re-swim result feeds the day’s ranking and is pushed to AIDA using the original start ID.

Opener

An opener is a warm-up or demonstration entry that should not count. Organizer / Main Judge add one under Setup → Add Athlete: name, nationality, gender, discipline, AP, PB (STA uses a mm:ss time picker; other disciplines use a number). Openers are excluded from rankings and never sent to AIDA.

Add Athlete dialog (opener / manual entry)


Schedule adjustments (OT Delay)

If the day slips — long warm-up, an incident, equipment issue — you can shift remaining OTs without rebuilding the start list.

Where to find it

On the Start List or Judge tab, the AppBar shows a 🕒 icon just before the role badge on the right. Visible only for Organizer and Main Judge.

OT Delay icon location

How to use

  1. Tap 🕒 → the Adjust Schedule dialog opens.
  2. Pick the athlete the delay starts from (the first one whose OT shifts).
  3. Enter the delay in minutes (whole minutes, positive only).
  4. Preview shows the new times — old → new for each affected athlete.
  5. Tap Apply.

Every OT from the chosen athlete onward shifts forward by that amount. The corresponding check-in / warm-up times shift too.

Side effects

Important


Push notifications

Apnea Comp uses push notifications for time-sensitive event updates. Notifications are delivered through OneSignal, which forwards them to APNs (iOS) and Firebase Cloud Messaging (FCM, Android). Each notification is sent in the recipient’s chosen app language.

What gets sent

There are two flavours: notifications you trigger manually, and ones the system sends automatically based on event state.

Manual (Organizer / Main Judge only)

From the More menu, Send Push opens a small panel with three buttons. Each sends to all athletes registered for the chosen day:

Each tap shows a confirmation dialog with the recipient count before sending.

Automatic

These run without staff action:

Trigger Recipients When
OT Delay applied Affected athletes only Immediately when an Organizer / Main Judge applies a delay
Check-in deadline reminder (1 hour) Athletes who have not checked in 2 hours before OT (= 1 hour before check-in deadline)
Check-in deadline reminder (30 minutes) Athletes who have not checked in 1.5 hours before OT (= 30 minutes before check-in deadline)
Protest filed All event staff + the athlete When a protest is submitted
Protest awaiting signature All event staff + the athlete When staff file on the athlete’s behalf
Protest decided All event staff + the athlete When the jury accepts / rejects / withdraws

Once an athlete checks in (or is marked DNS / Late), the reminders stop.

Who receives notifications

Only users with all of the following:

Disabling notifications

Disabling clears your push token from the server immediately.


Offline operation

The app is designed to keep working when the internet drops mid-day, which is common at pool / depth venues.

What happens when you lose connection

A red bar “You are offline” appears at the top. You can still:

The Offline badge

Offline badge on athlete card

When you save a result while offline, the athlete card shows a small ⛔ Offline badge instead of the AIDA sync badge. This means:

When the internet returns, the badge changes to ✅ AIDA automatically. No manual action needed.

Manual sync

If for some reason auto-retry has not caught up, open Results:

Results sync banner

If anything is pending you will see an orange banner:

⚠️ Important

Offline results live in your device memory until they sync. Do not force-close the app or reboot the phone while you have offline items pending — they would be lost. Wait for the ⛔ badges to clear, or tap Sync now before quitting.

If you are unsure, open Results and look for the orange banner. No banner = nothing pending.


AIDA integration

Getting your token

Log in to your AIDA International admin account at https://www.aidainternational.org. Open the competition you registered. Look for the API / Integration section to copy:

If you do not see these options, the AIDA admin who registered the event needs to share them, or your account permissions need updating.

Configuring in the app

Edit Event → paste both values → Test Connection → Save. The app caches the token securely on the server (never exposed in URLs). When you update the token, the new value is used immediately for the next save (no app restart needed).

What syncs and when

When sync fails

Mock mode

Set the token to test or demo (or leave both fields blank) to run without AIDA. The app generates sample athletes; nothing is sent. Use this for training, dry runs, or app demos. Mock-mode events ignore real-world dates so countdown and voice prompts work immediately for testing.


Multi-day events

For competitions spanning multiple days:

Data does not carry between days — moving an athlete in Day 2 does not affect Day 1. Total scores across days are computed in Results.

If your event is registered on AIDA with multiple days, Load Athletes pulls the per-day start lists automatically.


Results and export

The Results tab shows live standings, updated as judgments come in.

Rewards & ranking

The Rewards tab (also a tab in Athlete Mode) ranks athletes by points, grouped by discipline and gender.


Records (WR/CR/NR)

Mark and confirm World / Continental / National record attempts.

  1. Mark the event — when creating or editing an event, toggle World Record and / or Continental under Record Attempts. A 🏅 badge then shows on the event card and the Results header.
  2. Check records — on the Results tab, tap Check WR/CR/NR. For each white-card athlete the app queries the AIDA official records (by nationality, discipline, gender) and suggests WR / CR / NR. Needs network — entries it cannot fetch are skipped.
  3. Confirm (Organizer / Main Judge) — a suggestion shows as a dashed badge (e.g. “WR?”). Tap it to confirm the level or clear it. Confirmed records show as a solid badge and are included in the CSV export.

Only white-card (valid) performances qualify. A performance with any penalty cannot be a World or Continental Record (Rulebook §10.2). The suggestion compares the realized performance (RP) to the current record; the judge makes the final decision.

Display & Language

Both settings live in the avatar menu (top-right), and apply instantly across the app.

Theme

Theme picker

Tap your avatar → Theme → choose System default, Light, or Dark.

Language

Language picker

Tap your avatar → Language → choose System default, English, 한국어, 日本語, 简体中文, or 繁體中文. The app switches immediately and remembers your choice.

Competition-standard terms stay in English in every language — OT, AP, RP, PB, discipline codes (STA, DYN, …), WHITE / YELLOW / RED, role names, and Line — so staff from different countries read the same labels.


FAQ

A staff member’s phone runs out of battery — do I lose their entries?

No. As soon as they save a result, it is stored on the server (or on their device if offline). Other devices in the same event see the result immediately. Even if their phone is permanently lost, only their unsynced offline results would be at risk — and only if they had any pending at the moment of failure.

Two people are looking at the same athlete and saving different results

Last save wins. The app does not currently warn about concurrent edits. Coordinate verbally to avoid this — typically only one judge enters a given result.

An athlete shows AP / PB but no startId — why?

Likely they were added in Mock mode or imported manually outside AIDA. AIDA sync requires a startId; results for those athletes will not be sent to AIDA (no badge shown). They still appear in Results.

I changed the AIDA token and old results are still failing

Open Results → if the banner says “Update token & resync” → tap it. Pending items will be re-sent with the new token. The app caches credentials on the server and refreshes the cache when you save Edit Event, so no app restart is needed.

What happens if internet drops during check-in?

The check-in is saved locally and the athlete card shows a small ⛔ “Offline” badge. As soon as the connection comes back, the check-in syncs to the server automatically (within 5 seconds). The athlete does not need to sign again. The signature drawing itself is not stored — it is only used for visual confirmation at the moment.

An athlete is not receiving push notifications

Common causes:

Can I delete an event?

Yes. An Organizer or Main Judge can delete an event — swipe it in the event list, or use Edit Event → Delete. Deletion is permanent and removes all of that event’s data (athletes, results, logs, check-in status, protests). Generated protest PDFs in file storage are not auto-removed on full-event deletion; contact us if you need them purged.

A protest is stuck on “Awaiting signature” and the athlete can’t sign

This happens with old protests created before the current signature flow. An Organizer or Main Judge can open More → Protests → the protest → 🗑 and delete it. See Protests → Deleting a protest.

The app shows an “Update required” screen and won’t let me in

Your installed version is below the minimum the organizer set for live use. Update to the latest version from the App Store / Play Store, then reopen — the app re-checks and lets you through.

Do I need to keep the app open during the day?

Yes, on the device(s) used for judging or check-in. The app does not run in the background. If you switch to another app the screen state is preserved, but offline auto-retry pauses until you reopen the app.

The app prevents the screen from auto-locking on every screen, so you can leave the device on a table without it going dark. The battery drains faster than normal because of this — keep the device plugged in for full-day events.

Push notifications themselves do not require the app to be open — iOS / Android deliver them even when the app is closed, as long as you have permitted notifications.

What devices are supported?

iPhone (iOS 15+) and Android (Android 9+). Tablet works but the layout is optimised for phone.


Troubleshooting

“Could not save” red SnackBar in Judge

This means the app could not even store the result locally — usually because the athlete was loaded but the local list got out of sync. Tap Reload (Setup) and try again. The error message includes the athlete ID and current count for diagnosis.

“AIDA token invalid” keeps appearing

App shows “You are offline” but I am clearly online

The connectivity check pings the server. If the server is briefly unreachable (rare) or your network blocks Supabase URLs (unusual on hotel / public wifi), the indicator may stay red. Try saving a result anyway — if it succeeds, the indicator clears within a few seconds.

OT Delay icon is missing

Check:

Schedule looks wrong after Line Assignment

The OT calculation runs on save. If you reordered athletes and saw the wrong OTs, scroll up and tap Save again — the times should now match the order. If not, please contact us with a screenshot.

A team member is stuck on Pending

Open Users tab → find their name → assign a role (Judge / Staff / …). They need to be approved per event; approval does not carry between events.

Results screen is blank but I have judged athletes

Pull down to refresh. If still blank, switch to another tab and back. If the issue persists, please screenshot and contact us — this should not happen.

Push notifications stopped working after I switched phones

Sign in on the new phone and launch the app once. The new device’s push token replaces the old one in your account. The old phone will no longer receive notifications.


Privacy & Data

For full details on what data the App collects, how it is processed, and your rights, see the Privacy Policy.

Quick summary:


Contact

For bugs, questions, or feedback:

When reporting a problem, please include:


Last updated: 2026-06-02.