also looking at this
LSU's own coaching surface, and what auditing the site turned up
#12
86 files
+3943
-1190
Review threads live on the whole diff, not on one commit, so none are shown here - a thread's line means something in the branch's final form, and painting it into an intermediate step would put it on code it is not about.
| @@ -1,136 +0,0 @@ | ||
| 1 | /** | |
| 2 | * The FAQ, in the organiser's own words. | |
| 3 | * | |
| 4 | * Grouped the way lastsoulultra.com groups it - the race, the athlete's crew, | |
| 5 | * spectators - because the answers genuinely address different people. A | |
| 6 | * prospective entrant and somebody hoping to come and watch want different | |
| 7 | * halves of this page, and a single ungrouped list makes both of them read all | |
| 8 | * of it. | |
| 9 | */ | |
| 10 | ||
| 11 | export interface Question { | |
| 12 | q: string | |
| 13 | /** Paragraphs, so a long answer keeps its breaks. */ | |
| 14 | a: string[] | |
| 15 | } | |
| 16 | ||
| 17 | export interface FaqGroup { | |
| 18 | slug: string | |
| 19 | title: string | |
| 20 | blurb: string | |
| 21 | questions: Question[] | |
| 22 | } | |
| 23 | ||
| 24 | export const faq: FaqGroup[] = [ | |
| 25 | { | |
| 26 | slug: 'the-race', | |
| 27 | title: 'the race', | |
| 28 | blurb: 'Format, timings and what is provided on site.', | |
| 29 | questions: [ | |
| 30 | { | |
| 31 | q: 'How does the Last Soul Ultra work?', | |
| 32 | a: [ | |
| 33 | 'The Last Soul Ultra follows the backyard ultra format. Every hour, all runners start together on a 6.7 km loop. Anyone who does not finish the loop in time and return to the starting corral before the next hour is eliminated.', | |
| 34 | 'The race continues until only one runner remains. That athlete must then complete one final solo loop to be officially declared the winner.', | |
| 35 | ], | |
| 36 | }, | |
| 37 | { | |
| 38 | q: 'When does the race start?', | |
| 39 | a: ['It kicks off Friday, 14 August 2026.'], | |
| 40 | }, | |
| 41 | { | |
| 42 | q: 'Is there a time limit or a maximum race duration?', | |
| 43 | a: [ | |
| 44 | 'No. There is no set end time. The race goes on until only one person is able to complete a loop.', | |
| 45 | 'This unpredictability is exactly what makes the format so unique and challenging.', | |
| 46 | ], | |
| 47 | }, | |
| 48 | { | |
| 49 | q: 'Is there electricity, water or food?', | |
| 50 | a: [ | |
| 51 | 'There is no electrical hookup. Water is provided in containers for each athlete.', | |
| 52 | 'Full catering is not provided: every participant must manage their own nutrition.', | |
| 53 | 'There is an aid station at the base camp stocked throughout the event, but it is intended only as a supplement and does not replace self-sufficiency.', | |
| 54 | ], | |
| 55 | }, | |
| 56 | { | |
| 57 | q: 'How is the base camp organised?', | |
| 58 | a: [ | |
| 59 | 'Each participant is allocated a 3x3 metre space at the base camp, marked in advance and assigned on a first come, first served basis.', | |
| 60 | 'As runners drop out during the race, remaining camps may be moved closer to the starting line.', | |
| 61 | ], | |
| 62 | }, | |
| 63 | { | |
| 64 | q: 'What mandatory gear is required?', | |
| 65 | a: ['Each participant must wear a working headlamp when running in twilight or darkness. Participation without this mandatory gear is not allowed.'], | |
| 66 | }, | |
| 67 | { | |
| 68 | q: 'What are the participation requirements?', | |
| 69 | a: ['Before the start, every athlete must sign a waiver. This document, including all terms and conditions, will be made available ahead of time.'], | |
| 70 | }, | |
| 71 | { | |
| 72 | q: 'Who is participating?', | |
| 73 | a: ['The starting field consists of international ultrarunners, athletes, well-known sports personalities, content creators and selected lottery participants.'], | |
| 74 | }, | |
| 75 | { | |
| 76 | q: 'Why is the location kept secret?', | |
| 77 | a: ['The exact location is not disclosed in order to guarantee the safety and smooth running of the event.'], | |
| 78 | }, | |
| 79 | ], | |
| 80 | }, | |
| 81 | { | |
| 82 | slug: 'crew', | |
| 83 | title: 'athlete crew', | |
| 84 | blurb: 'What a crew may do, and the two things that end an athlete’s race.', | |
| 85 | questions: [ | |
| 86 | { | |
| 87 | q: 'How much support can an athlete receive?', | |
| 88 | a: [ | |
| 89 | 'In the base camp, crew members can fully assist their athlete: with setup, nutrition, and preparation for the next loop.', | |
| 90 | 'Once the athlete enters the course, any kind of support is strictly prohibited. Even handing over food or gear during a loop will result in the runner’s immediate disqualification.', | |
| 91 | ], | |
| 92 | }, | |
| 93 | { | |
| 94 | q: 'Can crew members enter the track?', | |
| 95 | a: ['No. Crew members are not allowed on the track. If this rule is broken, the corresponding athlete will be automatically disqualified.'], | |
| 96 | }, | |
| 97 | { | |
| 98 | q: 'How many crew members are allowed?', | |
| 99 | a: ['Each runner may have up to three crew members. Having a crew is optional, not mandatory.'], | |
| 100 | }, | |
| 101 | ], | |
| 102 | }, | |
| 103 | { | |
| 104 | slug: 'watching', | |
| 105 | title: 'following the race', | |
| 106 | blurb: 'The race is closed to the public and open on every screen.', | |
| 107 | questions: [ | |
| 108 | { | |
| 109 | q: 'Can people watch the event in person?', | |
| 110 | a: ['No, on-site spectators are not allowed. This ensures safety and smooth operations during the race.'], | |
| 111 | }, | |
| 112 | { | |
| 113 | q: 'Will the race be streamed live?', | |
| 114 | a: [ | |
| 115 | 'Yes. There will be a 24/7 livestream broadcasting the race from start to finish.', | |
| 116 | 'Updates, stories, and behind-the-scenes content will be shared regularly on Instagram.', | |
| 117 | ], | |
| 118 | }, | |
| 119 | { | |
| 120 | q: 'Where can I follow the race?', | |
| 121 | a: [ | |
| 122 | 'All highlights, updates and important information are shared on the official Instagram channel @lastsoulultra, as well as on the channels of Kim Gottwald and rappid.', | |
| 123 | 'The race is streamed live on YouTube, with selected highlights and additional content available after the event.', | |
| 124 | ], | |
| 125 | }, | |
| 126 | ], | |
| 127 | }, | |
| 128 | ] | |
| 129 | ||
| 130 | export function groupBySlug(slug: string): FaqGroup | undefined { | |
| 131 | return faq.find(group => group.slug === slug) | |
| 132 | } | |
| 133 | ||
| 134 | export function questionCount(): number { | |
| 135 | return faq.reduce((total, group) => total + group.questions.length, 0) | |
| 136 | } | |