-
Notifications
You must be signed in to change notification settings - Fork 2
Development
The development compose profile runs the SvelteKit dev server with hot reload
against an ArduPilot SITL container:
docker compose --profile development upThe app is served at http://localhost:5173. The SITL container exposes MAVLink
on TCP 5760, and src/lib/server/mavlink.ts connects to it at sitl:5760 in
development.
The published host ports are overridable for a machine that already uses a
default. Set APP_DEV_PORT, SITL_PORT, or APP_PORT in a root .env (see
.env.example); for example APP_DEV_PORT=5174 serves the dev app on 5174.
The development SITL image builds the ArduPilot copter, rover, plane, and sub
binaries, so SITL_VEHICLE and SITL_MODEL select which one the same profile
flies. PX4, Betaflight, and INAV each have their own profile. The dashboard
controls adapt to the connected vehicle: a submarine gets a depth control, a
rover and boat drop the vertical control, and air vehicles keep altitude.
| Vehicle class | Firmware | Command |
|---|---|---|
| Multirotor | ArduCopter | docker compose --profile development up |
| Ground rover | ArduRover | SITL_VEHICLE=Rover SITL_MODEL=rover docker compose --profile development up |
| Surface boat | ArduRover | SITL_VEHICLE=Rover SITL_MODEL=motorboat docker compose --profile development up |
| Fixed wing | ArduPlane | SITL_VEHICLE=ArduPlane SITL_MODEL=plane docker compose --profile development up |
| Submarine | ArduSub | SITL_VEHICLE=ArduSub SITL_MODEL=vectored docker compose --profile development up |
| Multirotor | PX4 | docker compose --profile development-px4 up |
| Multirotor | Betaflight | docker compose --profile development-betaflight up |
| Multirotor | INAV | docker compose --profile development-inav up |
The ArduPilot and PX4 profiles serve MAVLink on TCP 5760; the Betaflight and
INAV profiles serve MSP on TCP 5761. All dev profiles share the one
canarygc_app container, so stop one profile before starting another
(docker compose --profile <name> down).
To exercise the built production server locally:
docker compose --profile production up app webrtcThe app is served at http://localhost:3000.
Run these from compose/svelte-kit before committing. They mirror the CI
check job (see Deployment):
npm run lint # eslint
npm run check # svelte-check
npm run build # production build
npm audit --audit-level=moderateThe app is Svelte 5 with runes ($state, $derived, $effect, $props,
$bindable) and {@render children()}. Shared client logic lives in src/lib
and shared state in src/stores. Modals and notifications are created through
src/lib/overlays.ts (showModal, notify), which mounts and unmounts the
component, rather than instantiating modal components by hand.
The version is the latest v[0-9]* git tag. The release job bumps it from
commit subject markers, so tag commits accordingly:
- No marker: patch bump. Docs, fixes, polish.
-
[minor update]: minor bump. New features or surface area. -
[major update]: major bump. Breaking changes.
The /version page reports the running build's tag, commit, and build time.