itsrubberduck 4daf9c4e67 feat(flightlab): serve bridge telemetry to the website process
FlightLab lives on the website, /api/bridge/data lives here — since the split
those are two processes, and the website's copy of the in-memory store never
fills up again. The new service endpoint lets the website read this process's
store over HTTP, guarded by the SERVICE_SECRET the delete webhook already uses.

Pull, not push: the website asks only while somebody has a FlightLab screen
open, so a running bridge costs nothing when nobody is watching. No user lookup
is needed — the store keys on AppUser._id, which *is* the SSO subject.

Also repairs `yarn test`, which could not start at all in this repo: the split
carried tsconfig.tests.json across but not the tsconfig.scripts.json it extends.
The options are inlined instead, since this repo has no scripts/ directory.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 07:58:44 +02:00
2026-07-27 21:16:23 +02:00
2026-02-17 18:19:55 +01:00
2025-09-19 16:42:20 +02:00
2025-09-20 22:48:04 +02:00
2025-10-18 14:03:14 +02:00
2026-05-28 21:04:09 +02:00
2025-09-14 21:09:47 +02:00

Self-host OpenSquawk

OpenSquawk is a browser-based aviation radio training application. It provides Live ATC scenarios with spoken controller responses, a classroom learning mode, and optional simulator/cockpit bridge integration.

This repository contains the Nuxt application and its H3 API. Live ATC routing and authoritative session state are provided by the separate OpenSquawk-LiveATC-api service.

Requirements

  • Node.js 22 and Yarn 4
  • MongoDB
  • Python 3.12 and Poetry for OpenSquawk-LiveATC-api
  • An OpenAI-compatible service for cloud STT/TTS, or a configured local speech provider

The simulator/cockpit bridge is optional.

Start locally

Start MongoDB, then prepare the Nuxt application:

corepack enable
cp .env.example .env
yarn install

Generate strong values for JWT_SECRET, APP_JWT_SECRET, and SERVICE_SECRET. Keep AUTH_MODE=open for a self-hosted instance without a login. Configure the speech provider variables required by your setup.

In a separate checkout of OpenSquawk-LiveATC-api, start the decision backend:

poetry install
poetry run uvicorn main:app --reload

It listens on http://127.0.0.1:8000 by default. If it runs elsewhere, set NUXT_PUBLIC_RADIO_BACKEND_URL accordingly.

Start the Nuxt application:

AUTH_MODE=open yarn dev

The application is then available at http://localhost:3000.

Configuration

All documented variables and self-hosting defaults are in .env.example. MongoDB stores user state, learning progress, bug reports, and transmission logs locally. Telemetry forwarding is disabled when TELEMETRY_URL is empty.

Services

  • OpenSquawk-LiveATC-api: decision flows, routing, and Live ATC session state
  • MongoDB: application identities, progress, reports, and logs
  • OpenAI-compatible or local speech service: transcription and controller audio
  • Optional bridge: simulator and cockpit integration

License

OpenSquawk is licensed under the GNU Affero General Public License v3.0 only.

Description
No description provided
Readme AGPL-3.0 53 MiB
Languages
TypeScript 67.3%
Vue 31.8%
CSS 0.6%
JavaScript 0.3%