> ## Documentation Index
> Fetch the complete documentation index at: https://docs.schedkit.net/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Beacon Mode

> Live GPS tracking, field photo capture, and alert signals from mobile operators.

## Overview

Beacon Mode turns any mobile browser into a field terminal. Operators activate it from the dashboard — it sends periodic GPS pings, allows photo capture with location, and lets operators fire alert signals with one tap.

No native app required. PWA-installable on Android and iOS.

## How it works

1. Operator opens the dashboard and taps the `[+]` FAB
2. Taps **START BEACON** — GPS permission requested
3. Every 30 seconds, a `beacon` signal is POSTed to `/v1/signals`
4. Signal fans out via SSE to all War Room viewers in real time
5. War Room map shows a live dot for each active beacon with accuracy ring
6. Operator taps **CAPTURE** to attach a photo to the current location
7. Operator taps **ALERT** to fire a high-priority signal to all org members
8. Tap **STOP** or navigate away — `DELETE /v1/signals/beacon` fires, War Room removes the dot

## Device identity

Each device gets a stable UUID stored in `localStorage` under `schedkit-device-id`. Format: `dev-xxxxxx-xxxxxxxx`. This ID is included in every beacon payload as `meta.device_id` and shown in the War Room.

## Capture flow

1. Browser `getUserMedia` with `{video:{facingMode:'environment'}}`
2. Canvas resize to max 1280px, JPEG at 0.82 quality (\~150KB)
3. Upload to `/v1/upload` → returns `image_url`
4. POST `/v1/signals` with `type: "capture"` + `image_url` + coordinates
5. War Room drops a purple capture pin — persists permanently on the map

## Wake Lock

Beacon mode acquires a `WakeLock` to prevent the screen sleeping mid-operation. Re-acquired on `visibilitychange` if released by the OS.

## Display modes in the field

The beacon screen follows the global display mode:

* **DARK** — default dark interface
* **NITE** — deep red palette for dark-adapted human eyes
* **NVG** — near-black blue-grey, minimal luminance for I2 night vision goggles

See [Display Modes](/concepts/nvg) for details.

## API calls made by beacon mode

| Action        | Endpoint                                                   |
| ------------- | ---------------------------------------------------------- |
| Start beacon  | `POST /v1/signals` `{type:"beacon",...}`                   |
| Periodic ping | `POST /v1/signals` `{type:"beacon",...}` every 30s         |
| Photo capture | `POST /v1/signals` `{type:"capture", image_url, lat, lng}` |
| Fire alert    | `POST /v1/signals` `{type:"alert", note}`                  |
| Stop beacon   | `DELETE /v1/signals/beacon`                                |

<Card title="API Reference → Signals" icon="signal" href="/api-reference/signals">
  Full endpoint docs including the SSE stream.
</Card>
