From 217c7e84515f8fb78fd0f316df2d3cf79855a6f1 Mon Sep 17 00:00:00 2001 From: Marc Froehlich Date: Mon, 6 Jul 2026 23:27:06 +0200 Subject: [PATCH] Refactor website into data-driven content model --- website/_site/assets/css/main.css | 361 +++++++++++++--- website/_site/download/index.html | 99 ++++- website/_site/faq/index.html | 41 +- website/_site/features/airscout/index.html | 84 +++- website/_site/features/dual-chat/index.html | 78 +++- website/_site/features/dx-cluster/index.html | 146 +++++++ website/_site/features/index.html | 76 +++- website/_site/features/log-sync/index.html | 94 ++++- website/_site/features/macros/index.html | 146 +++++++ .../_site/features/priority-score/index.html | 114 +++-- .../_site/features/sked-reminder/index.html | 98 ++++- website/_site/features/timeline/index.html | 78 +++- website/_site/index.html | 388 ++++++------------ .../manual/de/airscout-integration/index.html | 41 +- .../manual/de/benutzeroberflaeche/index.html | 41 +- website/_site/manual/de/changelog/index.html | 41 +- .../manual/de/dx-cluster-server/index.html | 41 +- website/_site/manual/de/funktionen/index.html | 41 +- website/_site/manual/de/home/index.html | 41 +- website/_site/manual/de/index.html | 41 +- .../_site/manual/de/installation/index.html | 41 +- .../_site/manual/de/konfiguration/index.html | 41 +- .../manual/de/log-synchronisation/index.html | 41 +- .../manual/de/makros-und-variablen/index.html | 41 +- .../manual/en/airscout-integration/index.html | 41 +- website/_site/manual/en/changelog/index.html | 41 +- .../_site/manual/en/configuration/index.html | 41 +- .../manual/en/dx-cluster-server/index.html | 41 +- website/_site/manual/en/features/index.html | 41 +- website/_site/manual/en/home/index.html | 41 +- website/_site/manual/en/index.html | 41 +- .../_site/manual/en/installation/index.html | 41 +- website/_site/manual/en/log-sync/index.html | 41 +- .../manual/en/macros-and-variables/index.html | 41 +- .../_site/manual/en/user-interface/index.html | 41 +- website/_site/manual/index.html | 41 +- website/_site/news/index.html | 41 +- website/_site/screenshots/index.html | 85 ++-- website/src/_data/downloads.js | 37 ++ website/src/_data/features.js | 50 ++- website/src/_data/navigation.js | 9 + website/src/_data/screenshots.js | 23 ++ website/src/_layouts/base.njk | 29 +- website/src/assets/css/main.css | 361 +++++++++++++--- website/src/download/index.njk | 26 +- website/src/feature-pages/feature-page.njk | 27 +- website/src/features/index.njk | 7 +- website/src/index.njk | 156 +++---- website/src/screenshots/index.njk | 28 +- 49 files changed, 2649 insertions(+), 976 deletions(-) create mode 100644 website/_site/features/dx-cluster/index.html create mode 100644 website/_site/features/macros/index.html create mode 100644 website/src/_data/downloads.js create mode 100644 website/src/_data/navigation.js create mode 100644 website/src/_data/screenshots.js diff --git a/website/_site/assets/css/main.css b/website/_site/assets/css/main.css index 6ca4b24..e90f362 100644 --- a/website/_site/assets/css/main.css +++ b/website/_site/assets/css/main.css @@ -1,23 +1,54 @@ :root { - --bg: #0f172a; - --panel: #111827; - --panel2: #1f2937; - --text: #e5e7eb; - --muted: #9ca3af; + --bg: #050816; + --bg2: #0b1224; + --panel: rgba(15, 23, 42, 0.78); + --panel2: rgba(30, 41, 59, 0.72); + --border: rgba(148, 163, 184, 0.22); + --text: #f8fafc; + --muted: #aab6ca; + --soft: #64748b; --accent: #38bdf8; - --accent2: #a78bfa; + --accent2: #a855f7; + --accent3: #22c55e; + --shadow: 0 24px 80px rgba(0, 0, 0, 0.45); } * { box-sizing: border-box; } +html { + scroll-behavior: smooth; +} + body { margin: 0; - background: radial-gradient(circle at top left, #1e293b, var(--bg)); + background: var(--bg); color: var(--text); - font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; - line-height: 1.6; + font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + line-height: 1.65; +} + +.site-bg { + position: fixed; + inset: 0; + z-index: -1; + background: + radial-gradient(circle at 15% 8%, rgba(168, 85, 247, 0.30), transparent 30%), + radial-gradient(circle at 82% 18%, rgba(56, 189, 248, 0.26), transparent 30%), + radial-gradient(circle at 50% 90%, rgba(34, 197, 94, 0.12), transparent 30%), + linear-gradient(180deg, #050816 0%, #07111f 100%); +} + +.site-bg::after { + content: ""; + position: absolute; + inset: 0; + background-image: + linear-gradient(rgba(255,255,255,0.035) 1px, transparent 1px), + linear-gradient(90deg, rgba(255,255,255,0.035) 1px, transparent 1px); + background-size: 54px 54px; + mask-image: radial-gradient(circle at center, black, transparent 72%); } a { @@ -25,72 +56,245 @@ a { text-decoration: none; } +a:hover { + color: white; +} + .site-header { + position: sticky; + top: 0; + z-index: 10; display: flex; justify-content: space-between; + gap: 24px; align-items: center; - padding: 24px 7vw; + padding: 18px 6vw; + background: rgba(5, 8, 22, 0.76); + backdrop-filter: blur(18px); + border-bottom: 1px solid var(--border); } .brand { - font-weight: 800; - font-size: 1.25rem; + display: flex; + gap: 12px; + align-items: center; color: white; } -nav { +.brand-mark { + display: grid; + place-items: center; + width: 40px; + height: 40px; + border-radius: 14px; + background: linear-gradient(135deg, var(--accent), var(--accent2)); + box-shadow: 0 0 26px rgba(168, 85, 247, 0.45); +} + +.brand strong { + display: block; + font-size: 1.05rem; + letter-spacing: 0.02em; +} + +.brand small { + display: block; + color: var(--muted); + font-size: 0.78rem; + margin-top: -4px; +} + +.site-nav { display: flex; - gap: 18px; + align-items: center; + gap: 16px; flex-wrap: wrap; } -nav a { +.site-nav a { color: var(--muted); + font-size: 0.95rem; } -nav a:hover { +.site-nav a:hover { color: white; } +.nav-cta { + padding: 9px 14px; + border-radius: 999px; + color: white !important; + background: linear-gradient(135deg, var(--accent), var(--accent2)); + box-shadow: 0 0 22px rgba(56, 189, 248, 0.28); +} + .hero { - padding: 90px 7vw 70px; - max-width: 1100px; + padding: 92px 6vw 62px; + max-width: 1180px; +} + +.hero-split { + display: grid; + grid-template-columns: minmax(0, 1fr) minmax(360px, 0.9fr); + gap: 42px; + align-items: center; + max-width: 1500px; } .hero h1 { - font-size: clamp(2.4rem, 6vw, 5rem); - line-height: 1.02; - margin: 0 0 24px; + margin: 0 0 22px; + font-size: clamp(3rem, 8vw, 6.5rem); + line-height: 0.95; + letter-spacing: -0.07em; + background: linear-gradient(90deg, white, var(--accent), var(--accent2)); + -webkit-background-clip: text; + color: transparent; } -.hero p { - font-size: 1.25rem; +.hero .lead, +.hero > p, +.section-heading p, +.cta-panel p { color: var(--muted); - max-width: 760px; + font-size: 1.18rem; + max-width: 850px; +} + +.badge, +.eyebrow { + display: inline-flex; + width: fit-content; + align-items: center; + gap: 8px; + color: #e9d5ff; + background: rgba(168, 85, 247, 0.13); + border: 1px solid rgba(168, 85, 247, 0.34); + padding: 6px 12px; + border-radius: 999px; + text-transform: uppercase; + letter-spacing: 0.08em; + font-size: 0.74rem; + font-weight: 800; } .actions { display: flex; - gap: 16px; - margin-top: 32px; + gap: 14px; + margin-top: 30px; flex-wrap: wrap; } .button { - padding: 13px 20px; - border-radius: 999px; - background: var(--accent); + display: inline-flex; + align-items: center; + justify-content: center; + min-height: 46px; + padding: 12px 18px; + border-radius: 14px; color: #020617; - font-weight: 700; + background: linear-gradient(135deg, var(--accent), var(--accent2)); + font-weight: 800; + box-shadow: 0 16px 44px rgba(56, 189, 248, 0.25); } .button.secondary { - background: var(--panel2); color: white; + background: rgba(30, 41, 59, 0.85); + border: 1px solid var(--border); + box-shadow: none; +} + +.button.ghost { + color: white; + background: transparent; + border: 1px solid var(--border); + box-shadow: none; +} + +.hero-panel, +.card, +.cta-panel { + background: var(--panel); + border: 1px solid var(--border); + border-radius: 26px; + box-shadow: var(--shadow); +} + +.hero-panel { + overflow: hidden; + transform: perspective(1200px) rotateY(-5deg) rotateX(2deg); +} + +.terminal-bar { + display: flex; + gap: 8px; + align-items: center; + padding: 14px 16px; + border-bottom: 1px solid var(--border); + background: rgba(2, 6, 23, 0.74); +} + +.terminal-bar span { + width: 11px; + height: 11px; + border-radius: 50%; + background: var(--accent2); +} + +.terminal-bar span:nth-child(2) { + background: #f59e0b; +} + +.terminal-bar span:nth-child(3) { + background: var(--accent3); +} + +.terminal-bar strong { + margin-left: 8px; + color: var(--muted); + font-size: 0.85rem; +} + +.mock-grid { + display: grid; + gap: 12px; + padding: 18px; +} + +.mini-card { + padding: 14px; + border-radius: 16px; + background: rgba(15, 23, 42, 0.88); + border: 1px solid rgba(148, 163, 184, 0.16); +} + +.mini-card strong, +.mini-card small { + display: block; +} + +.mini-card small { + color: var(--muted); + margin-top: 4px; } .section { - padding: 40px 7vw; + padding: 52px 6vw; +} + +.section.narrow { + max-width: 1040px; +} + +.section-heading { + margin-bottom: 26px; +} + +.section h2 { + font-size: clamp(2rem, 4vw, 3.4rem); + line-height: 1.05; + margin: 12px 0 14px; + letter-spacing: -0.04em; } .grid { @@ -100,21 +304,74 @@ nav a:hover { } .card { - background: rgba(17, 24, 39, 0.82); - border: 1px solid rgba(148, 163, 184, 0.18); - border-radius: 22px; padding: 24px; + transition: transform 180ms ease, border-color 180ms ease, background 180ms ease; } -.card h3 { +.card:hover { + transform: translateY(-4px); + border-color: rgba(56, 189, 248, 0.45); + background: rgba(15, 23, 42, 0.92); +} + +.card h3, +.card h2 { margin-top: 0; } -.site-footer { - padding: 40px 7vw; +.card p { color: var(--muted); } +.feature-icon { + font-size: 2rem; + margin-bottom: 14px; +} + +.feature-icon.large { + font-size: 4rem; +} + +.content-card { + max-width: 980px; +} + +.tag-list { + display: flex; + gap: 10px; + flex-wrap: wrap; +} + +.tag-list span { + padding: 7px 11px; + border-radius: 999px; + color: var(--muted); + background: rgba(15, 23, 42, 0.85); + border: 1px solid var(--border); +} + +.download-card { + min-height: 220px; +} + +.screenshot-placeholder { + display: grid; + place-items: center; + min-height: 180px; + margin-bottom: 16px; + border-radius: 18px; + background: + linear-gradient(135deg, rgba(56, 189, 248, 0.20), rgba(168, 85, 247, 0.20)), + rgba(2, 6, 23, 0.7); + border: 1px solid var(--border); + color: white; + font-weight: 800; +} + +.cta-panel { + padding: clamp(28px, 5vw, 60px); +} + .manual-content { max-width: 980px; } @@ -149,19 +406,23 @@ nav a:hover { text-align: left; } -.eyebrow { - color: var(--accent2); - text-transform: uppercase; - letter-spacing: 0.08em; - font-size: 0.78rem; - font-weight: 800; +.site-footer { + padding: 42px 6vw; + color: var(--muted); + border-top: 1px solid var(--border); } -.feature-icon { - font-size: 2rem; - margin-bottom: 14px; -} +@media (max-width: 900px) { + .hero-split { + grid-template-columns: 1fr; + } -.feature-icon.large { - font-size: 3.5rem; + .hero-panel { + transform: none; + } + + .site-header { + align-items: flex-start; + flex-direction: column; + } } \ No newline at end of file diff --git a/website/_site/download/index.html b/website/_site/download/index.html index 0778569..fe9a5bc 100644 --- a/website/_site/download/index.html +++ b/website/_site/download/index.html @@ -5,7 +5,6 @@ Download KST4Contest - @@ -20,38 +19,104 @@ + +
+
-

Download KST4Contest

-

- Official builds are published through GitHub Releases for Windows, Linux - and macOS. +

Download

+

Get KST4Contest

+

+ Official builds are published through GitHub Releases for Windows, Linux and macOS.

+
+ +
+
+ + + + + + + + + + +
\ No newline at end of file diff --git a/website/_site/faq/index.html b/website/_site/faq/index.html index 6a3c71f..3ad5dff 100644 --- a/website/_site/faq/index.html +++ b/website/_site/faq/index.html @@ -5,7 +5,6 @@ KST4Contest FAQ - @@ -20,17 +19,36 @@ + +
+ @@ -109,7 +127,8 @@ \ No newline at end of file diff --git a/website/_site/features/airscout/index.html b/website/_site/features/airscout/index.html index 0a282e1..de07378 100644 --- a/website/_site/features/airscout/index.html +++ b/website/_site/features/airscout/index.html @@ -5,7 +5,6 @@ {{ feature.title }} | KST4Contest - @@ -20,30 +19,49 @@ + +
+
-

Aircraft Scatter

+

Aircraft Scatter ยท since 1.26

AirScout Integration

-

Use airplane scatter awareness directly inside your ON4KST contest workflow.

+

Use aircraft scatter awareness directly inside your ON4KST contest workflow.

-
-
+
+
โœˆ๏ธ

Why it matters

@@ -51,11 +69,28 @@

Built for contest operation

- This feature is designed for real VHF, UHF and SHF contest workflows, - where speed, awareness and correct operator decisions matter. + This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation.

+

Keywords

+
+ + AirScout + + airplane scatter + + aircraft scatter + + VHF contest + +
+ + +

Related features

@@ -74,6 +109,10 @@ + + + + @@ -90,6 +129,10 @@ + + + + @@ -106,15 +149,20 @@ + + + +
-
+
\ No newline at end of file diff --git a/website/_site/features/dual-chat/index.html b/website/_site/features/dual-chat/index.html index ebc051d..032b2a4 100644 --- a/website/_site/features/dual-chat/index.html +++ b/website/_site/features/dual-chat/index.html @@ -5,7 +5,6 @@ {{ feature.title }} | KST4Contest - @@ -20,30 +19,49 @@ + +
+
-

ON4KST Chat

+

ON4KST Chat ยท since 1.26

Dual Chat Categories

-

Operate in two ON4KST categories at once, for example VHF/UHF and microwave.

+

Operate in two ON4KST categories at once, for example VHF/UHF and microwave.

-
-
+
+
๐Ÿ’ฌ

Why it matters

@@ -51,11 +69,26 @@

Built for contest operation

- This feature is designed for real VHF, UHF and SHF contest workflows, - where speed, awareness and correct operator decisions matter. + This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation.

+

Keywords

+
+ + ON4KST + + dual chat + + microwave contest + +
+ + +

Related features

@@ -74,6 +107,10 @@ + + + + @@ -90,15 +127,20 @@ + + + +
-
+
\ No newline at end of file diff --git a/website/_site/features/dx-cluster/index.html b/website/_site/features/dx-cluster/index.html new file mode 100644 index 0000000..f900ae1 --- /dev/null +++ b/website/_site/features/dx-cluster/index.html @@ -0,0 +1,146 @@ + + + + + {{ feature.title }} | KST4Contest + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+

Radio Workflow ยท since 1.23

+

DXCluster Server

+

Use DXCluster information as part of the wider contest operating workflow.

+
+ +
+
+
๐Ÿ“ก
+ +

Why it matters

+

KST4Contest includes DXCluster functionality to support situational awareness during contest operation.

+ +

Built for contest operation

+

+ This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation. +

+ + +

Keywords

+
+ + DXCluster + + ham radio + + contest + +
+ + + +

Related features

+
+ + + + + + + + + + + + Log Synchronization + + + + + + + + + + + + Priority Score System + + + + + + + + + + + + + + + + + +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/website/_site/features/index.html b/website/_site/features/index.html index 0958cf2..ef21198 100644 --- a/website/_site/features/index.html +++ b/website/_site/features/index.html @@ -5,7 +5,6 @@ KST4Contest Features - @@ -20,25 +19,45 @@ + +
+
-

Features built for serious VHF/UHF/SHF contest operation.

-

+

Features

+

Contest tools, not just chat windows.

+

KST4Contest combines ON4KST chat, candidate scoring, AirScout workflow, sked handling, log synchronization and operator decision support.

@@ -47,7 +66,7 @@
-
+ -
+
โœˆ๏ธ

Aircraft Scatter

AirScout Integration

-

Use airplane scatter awareness directly inside your ON4KST contest workflow.

+

Use aircraft scatter awareness directly inside your ON4KST contest workflow.

Learn more โ†’
-
+ -
+ -
\ No newline at end of file diff --git a/website/_site/features/log-sync/index.html b/website/_site/features/log-sync/index.html index 452fba0..b692857 100644 --- a/website/_site/features/log-sync/index.html +++ b/website/_site/features/log-sync/index.html @@ -5,7 +5,6 @@ {{ feature.title }} | KST4Contest - @@ -20,30 +19,49 @@ + +
+
-

Logger Integration

+

Logger Integration ยท since 1.31

Log Synchronization

-

Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.

+

Connect ON4KST chat workflow with Win-Test, UCXLog and contest logging state.

-
-
+
+
๐Ÿ”„

Why it matters

@@ -51,11 +69,26 @@

Built for contest operation

- This feature is designed for real VHF, UHF and SHF contest workflows, - where speed, awareness and correct operator decisions matter. + This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation.

+

Keywords

+
+ + Win-Test + + UCXLog + + contest logger + +
+ + +

Related features

@@ -74,15 +107,40 @@ + + + + + + + + + + + + + + + + + + Dual Chat Categories + + + + + +
-
+
\ No newline at end of file diff --git a/website/_site/features/macros/index.html b/website/_site/features/macros/index.html new file mode 100644 index 0000000..165a875 --- /dev/null +++ b/website/_site/features/macros/index.html @@ -0,0 +1,146 @@ + + + + + {{ feature.title }} | KST4Contest + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+

Operator Speed ยท since 1.0

+

Macros and Variables

+

Send recurring contest messages faster with configurable macros and variables.

+
+ +
+
+
โšก
+ +

Why it matters

+

Macros reduce repetitive typing and help operators respond quickly during active ON4KST contest sessions.

+ +

Built for contest operation

+

+ This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation. +

+ + +

Keywords

+
+ + macros + + ON4KST + + operator workflow + +
+ + + +

Related features

+
+ + + + + + + + + + Sked Reminder + + + + + + + + + + + + + + + + + + + + + + + + Dual Chat Categories + + + + + + + +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/website/_site/features/priority-score/index.html b/website/_site/features/priority-score/index.html index 1a40020..28d9db9 100644 --- a/website/_site/features/priority-score/index.html +++ b/website/_site/features/priority-score/index.html @@ -5,7 +5,6 @@ {{ feature.title }} | KST4Contest - @@ -20,42 +19,82 @@ + +
+
-

Contest Workflow

+

Contest Workflow ยท since 1.40

Priority Score System

-

Find the most promising stations faster using contest-aware candidate scoring.

+

Find the most promising stations faster using contest-aware candidate scoring.

-
-
+
+
๐ŸŽฏ

Why it matters

-

KST4Contest ranks stations by contest-relevant signals such as activity, direction, sked context, bands, frequencies and operator workflow.

+

KST4Contest ranks stations by activity, direction, sked context, band information, QRG hints and operator workflow signals.

Built for contest operation

- This feature is designed for real VHF, UHF and SHF contest workflows, - where speed, awareness and correct operator decisions matter. + This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation.

+

Keywords

+
+ + ON4KST + + VHF + + UHF + + SHF + + contest + + priority candidates + +
+ + +

Related features

@@ -63,6 +102,26 @@ + + + Timeline View + + + + + + + + + + + + + + + + + AirScout Integration @@ -74,6 +133,10 @@ + + + + @@ -90,18 +153,6 @@ - - - - - - - - Timeline View - - - - @@ -109,12 +160,13 @@
-
+
\ No newline at end of file diff --git a/website/_site/features/sked-reminder/index.html b/website/_site/features/sked-reminder/index.html index bf729e8..0d56f09 100644 --- a/website/_site/features/sked-reminder/index.html +++ b/website/_site/features/sked-reminder/index.html @@ -5,7 +5,6 @@ {{ feature.title }} | KST4Contest - @@ -20,30 +19,49 @@ + +
+
-

Sked Management

+

Sked Management ยท since 1.40

Sked Reminder

-

Keep scheduled contacts visible and avoid missing time-critical skeds.

+

Keep scheduled contacts visible and avoid missing time-critical skeds.

-
-
+
+
๐Ÿ””

Why it matters

@@ -51,11 +69,26 @@

Built for contest operation

- This feature is designed for real VHF, UHF and SHF contest workflows, - where speed, awareness and correct operator decisions matter. + This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation.

+

Keywords

+
+ + sked + + ON4KST + + contest reminder + +
+ + +

Related features

@@ -74,6 +107,10 @@ + + + + @@ -90,15 +127,40 @@ + + + + + + + + + + + + Timeline View + + + + + + + + + + + +
-
+
\ No newline at end of file diff --git a/website/_site/features/timeline/index.html b/website/_site/features/timeline/index.html index a523240..95b0b9d 100644 --- a/website/_site/features/timeline/index.html +++ b/website/_site/features/timeline/index.html @@ -5,7 +5,6 @@ {{ feature.title }} | KST4Contest - @@ -20,30 +19,49 @@ + +
+
-

Contest Awareness

+

Contest Awareness ยท since 1.40

Timeline View

-

See upcoming AP windows and candidate timing in a compact contest timeline.

+

See upcoming AP windows and candidate timing in a compact contest timeline.

-
-
+
+
โฑ๏ธ

Why it matters

@@ -51,11 +69,26 @@

Built for contest operation

- This feature is designed for real VHF, UHF and SHF contest workflows, - where speed, awareness and correct operator decisions matter. + This feature supports real VHF, UHF and SHF contest workflows where timing, + awareness and fast decisions matter. It is part of the broader KST4Contest + approach: ON4KST chat should not just be displayed, it should actively support + contest operation.

+

Keywords

+
+ + timeline + + AP windows + + airplane scatter + +
+ + +

Related features

@@ -74,6 +107,10 @@ + + + + @@ -90,15 +127,20 @@ + + + +
-
+
\ No newline at end of file diff --git a/website/_site/index.html b/website/_site/index.html index ba65f77..9d0c0a6 100644 --- a/website/_site/index.html +++ b/website/_site/index.html @@ -5,7 +5,6 @@ KST4Contest โ€“ Contest-Optimized ON4KST Chat Client - @@ -20,284 +19,160 @@ + +
+
-
- -

The contest-optimized ON4KST client

- +
+
+

The contest-optimized ON4KST client

KST4Contest

- -

- Work smarter. Make more QSOs. - Built for serious VHF, UHF and SHF contest operators. +

+ Work smarter. Make more QSOs. KST4Contest brings priority candidates, + AirScout workflow, sked reminders, dual chat categories and log synchronization + into one contest-focused ON4KST client.

+
+
+
+ + KST4Contest workflow +
+
+ +
+
-
+
+

Powerful features

+

Everything you need for contest success

+

Every feature is designed to reduce operator workload and improve decision speed during real contest operation.

+
-

- Powerful Features -

- -

- Everything you need for contest success -

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
- +
+ + + + + +
+
โฑ๏ธ
+

Contest Awareness

+

Timeline View

+

See upcoming AP windows and candidate timing in a compact contest timeline.

+ Learn more โ†’ +
+ + + + + + + + + + + +
-
- -

- Why KST4Contest? +

+

Open Source

+

Built by contesters for contesters.

+

+ KST4Contest is developed around real VHF/UHF/SHF contest workflows: + ON4KST chat, aircraft scatter, skeds, logging and fast operator decisions.

- -

- Built by contesters for contesters. -

- -
- -
-

Contest Workflow

- -

- Unlike traditional ON4KST clients, KST4Contest focuses on - operator workflow instead of simply displaying chat messages. -

-
- -
-

Decision Support

- -

- Priority candidates, activity detection, AirScout integration, - timeline and sked reminders help operators make better decisions. -

-
- -
-

Open Source

- -

- KST4Contest is open source and continuously developed together - with the amateur radio contest community. -

-
- + - +
-