🎙️ Part of the oeradio.at open source ham radio tool collection. Browse all tools → oeradio.at/werkzeuge
Kurzwellenfunk verstehen durch Fehleranalyse Understanding HF Radio by Debugging QSOs
Ein interaktives Lernwerkzeug für Amateurfunk-Einsteiger, das erklärt, warum HF-Funkverbindungen manchmal scheitern.
"CQ… Nothing." simuliert typische Situationen, in denen ein Funkamateur ruft – aber keine Antwort bekommt. Anstatt Frustration zu erzeugen, hilft dieses Tool dabei, die physikalischen und technischen Gründe zu verstehen:
- Ausbreitungsbedingungen (Skip-Zone, D-Layer-Absorption, MUF)
- Zeitabhängige Faktoren (Tageszeit, Jahreszeit)
- Technische Aspekte (Antennen, Leistung, Störungen)
- Betriebliche Faktoren (Timing, Frequenzwahl)
- 16 realistische Szenarien mit unterschiedlichen Schwierigkeitsgraden
- 23 mögliche Ursachen in 5 Kategorien
- Plausibilitätsbewertung (sehr wahrscheinlich → unwahrscheinlich)
- Zweisprachig: Deutsch (Standard) und Englisch
- Keine Bestrafung – Fokus auf Verständnis und "Aha-Momente"
- Responsive Design für Desktop und Mobile
- Barrierefreiheit (ARIA, Tastaturnavigation)
- Node.js 18+
- npm
git clone https://github.com/achildrenmile/cqnothing.git
cd cqnothing
npm installnpm run devÖffnet http://localhost:5173
npm run buildOutput in dist/
npm run previewcqnothing/
├── public/
│ └── config.json # Runtime-Konfiguration (Parent Site Branding)
├── src/
│ ├── data/
│ │ ├── causes.json # 23 Ursachen mit DE/EN Texten
│ │ ├── scenarios.json # 16 Szenarien mit Mappings
│ │ └── strings.json # UI-Übersetzungen
│ ├── causes.js # Ursachen-Modul
│ ├── config.js # Runtime-Config Loader
│ ├── evaluator.js # Auswertungslogik
│ ├── i18n.js # Internationalisierung
│ ├── main.js # Einstiegspunkt
│ ├── scenarios.js # Szenarien-Modul
│ ├── styles.css # Styling
│ └── ui.js # UI-Rendering
├── index.html # HTML-Template
├── package.json
├── vite.config.js
├── Dockerfile # Multi-stage Docker Build
├── docker-entrypoint.sh # Container Entrypoint (Config Generation)
├── nginx.conf # nginx Konfiguration
└── deploy-production.sh # Deployment Script
Neue Szenarien werden in src/data/scenarios.json hinzugefügt:
{
"id": "unique_id",
"title": { "de": "Titel DE", "en": "Title EN" },
"situation": { "de": "Beschreibung...", "en": "Description..." },
"band": "40m",
"time": "afternoon",
"distance": "medium",
"antenna": "dipole",
"power": { "de": "100 Watt", "en": "100 Watts" },
"symptoms": ["no_response", "weak_signals"],
"causeMappings": {
"skip_zone": "very_likely",
"d_layer": "likely",
"antenna_mismatch": "possible",
"qrm": "unlikely"
},
"ahaHint": { "de": "Erklärung...", "en": "Explanation..." },
"difficulty": "beginner"
}docker build -t cqnothing .
docker run -d -p 3010:80 cqnothingDas Tool kann für verschiedene Parent Sites konfiguriert werden, ohne neu gebaut zu werden:
docker run -d -p 3010:80 \
-e PARENT_SITE_URL="https://oeradio.at" \
-e PARENT_SITE_LOGO="https://oeradio.at/logo.png" \
-e PARENT_SITE_NAME="OERadio" \
cqnothingUmgebungsvariablen:
PARENT_SITE_URL– Link-Ziel für Logo und FooterPARENT_SITE_LOGO– URL zum Logo-Bild (optional, wenn leer wird kein Logo angezeigt)PARENT_SITE_NAME– Anzeigename im Footer ("Teil der {Name} Tools")
Die Konfiguration kann auch direkt in public/config.json geändert werden.
.env.productionaus.env.production.exampleerstellen./deploy-production.shausführen
- Vite – Build-Tool
- Vanilla JS – Kein Framework, pure ES Modules
- CSS Custom Properties – Design Tokens
- nginx – Production Server
- Docker – Containerisierung
- Cloudflare Tunnel – HTTPS/CDN
MIT
Michael Linder, OE8YML https://oeradio.at