Skip to content

Latest commit

 

History

History
188 lines (143 loc) · 8.2 KB

File metadata and controls

188 lines (143 loc) · 8.2 KB

McGill Rocket Team

Ground Station

Software for observing and controlling McGill Rocket Team rocket and electrical ground-support equipment. It provides local telemetry monitoring, command control, video, maps, simulation, and mission-data recording through Yamcs.

Getting started

Prerequisites

Install Docker Desktop and start it before running Tilt. Use mise as the preferred version manager; the repository's .tool-versions defines the required Node.js, pnpm, Java, Maven, and Tilt versions.

On macOS, install mise with Homebrew:

brew install mise

On Windows, install Git, Python 3 (with python on your PATH), and mise with winget. In PowerShell, with Docker Desktop running, install mise:

winget install jdx.mise

Open a new PowerShell window and activate mise for that session:

(&mise activate pwsh) | Out-String | Invoke-Expression

On either platform, clone the repository and install the toolchain and dependencies in the same terminal:

git clone https://github.com/McGillRocketTeam/ground-station.git
cd ground-station
mise install
corepack enable
pnpm install
pnpm build

Set up .env

Copy the backend's .example.env file to .env.

On MacOS/Linux:

cp apps/backend/.env.example apps/backend/.env

On Windows:

Copy-Item -Path "apps/backend/.env.example" -Destination "apps/backend/.env"

Run locally with Tilt

On Windows, run the Tilt commands below in PowerShell so Tilt uses the Windows-specific local resources.

Tilt orchestrates the local development environment. The default stack starts the frontend, Yamcs backend, MQTT broker, offline map server, and shared yamcs-effect package watcher. The frontend is available at http://localhost:5173 and Yamcs at http://localhost:8090.

# Core local stack
tilt up

# Core stack with simulated telemetry
tilt up -- --simulator

# Core stack with the media backend, media frontend, and MediaMTX
tilt up -- --media

# Full local development stack: core, simulator, and media
tilt up -- --simulator --media

# Core stack with the NetBird remote-network resource
tilt up -- --remote

# Use random simulator data instead of the default incremental data
tilt up -- --simulator --simulator_data_mode=random

# Connect to an existing MQTT broker instead of starting the local broker
tilt up -- --mqtt_broker_url=mqtt://broker.example:1883

# Include EcoFlow BLE-to-MQTT publishing
tilt up -- --ecoflow_mqtt --ecoflow_user_id=YOUR_USER_ID

The EcoFlow stack also accepts --ecoflow_ble_address, --ecoflow_mqtt_host, and --ecoflow_mqtt_port. Use --environment=development or --environment=production to choose the frontend environment; production is the default. Stop the environment with tilt down.

For focused work without Tilt:

pnpm --filter @mrt/frontend dev
YAMCS_INSTANCE=launch-canada pnpm --filter @mrt/simulator dev
pnpm check-types

Documentation

Contributing

  • Use Conventional Commits for pull-request titles.
  • Squash commits when merging pull requests.
  • Pull-request descriptions must be written by a human. If AI assistance is necessary, its text must follow the ASD-STE100 Simplified Technical English standard and be reviewed by the author.

Repository map

This is a guide to where code lives. For how the services fit together, see the architecture overview; for unfamiliar names, see the glossary.

Location What lives there
apps/frontend/ Main operator GUI: dashboards, procedures, export, and flight review.
apps/backend/ Yamcs mission configuration and device integrations.
apps/media-frontend/, apps/media-backend/ Media overlays and production-feed state.
apps/simulator/, apps/ops-simulator/ pnpm Telemetry and ground-operations simulation.
apps/ecoflow-mqtt/ EcoFlow battery telemetry bridge.
apps/xtce-generator/ Yamcs mission-definition generator.
apps/tui/ Terminal UI.
packages/yamcs-effect/, packages/yamcs-procedures/ Shared Yamcs client code and procedure definitions.
packages/media-state/, packages/map-style/, packages/landing-prediction/ Shared media state, map styling, and landing prediction.
docs/ Architecture, protocol, device, and test documentation.
docker/, Tiltfile Container configuration and the local development stack.
pnpm-workspace.yaml The apps/* and packages/* workspaces.

For GUI work, start in apps/frontend/src/pages/ for pages and apps/frontend/src/components/router/router.tsx for routes. Dashboard panels live in apps/frontend/src/cards/; apps/frontend/src/lib/cards.ts registers them, and apps/frontend/src/components/dashboard/ contains the controls and forms used to add and configure them. Reusable UI components live in apps/frontend/src/components/ui/. For example, the Text Card is defined in apps/frontend/src/cards/text-card.tsx and can be added through the dialog in apps/frontend/src/components/dashboard/plus.tsx.

License and upstream attribution

Copyright (c) 2026 McGill Rocket Team. Unless a component carries a different notice, MRT-authored source code in this repository is available under the permissive MIT License. Distributions containing copies or substantial portions of that code must retain the MRT copyright and license notice.

The org.yamcs.mqtt integration in apps/backend is an exception. It contains modified source code derived from Yamcs MQTT, developed by the Yamcs team and contributors. That directory, including MRT's modifications and additions to the derived integration, is distributed under the GNU Affero General Public License, version 3 (AGPL-3.0-only). Its corresponding source and revision history are available in this repository.

Building or distributing the backend together with the AGPL-covered integration may subject the combined work to the AGPL. Third-party dependencies and vendored components retain their own license terms and notices.