Waypoints
admin console
Sign in
Editing waypoints needs the admin account.
Site defaults
Add a waypoint
Current waypoints
Commute users
Invite someone by email — Cognito sends them a temporary password. They sign in at /commute/ and manage their own routes.
Transit feeds
Rail and metro systems the commute card follows. Search = offered in the /commute/ station picker. Live = the poller pulls real-time delays; off falls back to the printed schedule. Changes save immediately.
Any other rail or metro system Transitland knows works schedule-only through station search; it shows up here once someone saves a route on it.
Beats
Beats management moved to its own page — smw.org/beatscontrol/.
API usage & limits
Every external API the site calls this month, against its free ceiling. Expand a row for the rate-limit / pricing spec.
AI spend cap
—
Adding an API? add a row to API_REGISTRY in the waypoints Lambda and a bumpApi() call on the upstream fetch.
Commute — Google Routes cost
Routes is the only per-call cost. These levers and the counter below cap and track it.
Drive subscription ($7/mo billing)
Create the recurring Price for Drive tracking in the Stripe dashboard, then paste its id here. Rotate the Stripe secret key and webhook signing secret from the key rows above (look for “Stripe secret key” / “Stripe webhook secret” once their rows show up).
Routes — how much detail
Controls the FieldMask on the Routes call and how much of the road block the card shows. "trip distance" adds one field (still the Advanced SKU).
schedules, windows, recent activity, history
EventBridge auto-schedules
Everyone's windows
Recent poller activity (24h)
Monthly history
Home page layout
Order and width of the panels on the public home page. The Full/Half button sets a panel to sit side by side with an adjacent half-width panel on wide screens (stacks full-width on narrow ones). Applies to every visitor within a few seconds of saving.
Menu
The hamburger menu at the top of the home page. Set the order, hide a link without losing it, or add your own (a page on this site like /foo/, or a full https:// address, which opens in a new tab). Built-in links can be hidden but not deleted. The footer links are separate and unchanged. Applies to every visitor within a few seconds of saving.
Add a link
Maze
Grid shapes, complexity, and timed mode for the homepage Maze widget. Visitors pick among whichever shapes are enabled here; changes apply within a few seconds of saving.
Marble page
Tunes how the marble moves and the trail it leaves in Marble mode. Settings are fetched fresh (no caching) once when /marble/ loads, so changes apply the next time someone loads that page — not to an already-open tab.
Speed & feel
Top speed: the cap on how fast the marble can ever move, no matter how hard or fast you drag. Pull gain: how eagerly the marble chases your finger from a distance — higher catches up faster, lower lags further behind before it starts moving. Ease rate: how quickly the marble's actual motion catches up to where it wants to go — lower feels softer and laggier, higher feels tighter and more direct. Friction: how fast the marble grinds to a stop once you let go — lower stops it almost instantly, closer to 1 lets it keep rolling/coasting.
Trail mark
Trail fade: how quickly the sand trail fades away behind the marble — lower makes it linger longer, higher erases it faster. Groove darkness (base): how dark the trail mark is when the marble is moving slowly. Groove darkness (+speed): how much darker the trail mark gets at top speed, on top of the base darkness. Groove width: how wide the dark trail mark is, relative to the marble itself.
Glow
Glow width: how wide the warm glow halo around the marble is — 0 turns the glow off entirely. Glow brightness (base): how bright the glow is when the marble is moving slowly. Glow brightness (+speed): how much brighter the glow gets at top speed, on top of the base brightness. Could add later: the glow's tint colors (light/dark-mode rgb pair) as color pickers — a separate, smaller follow-up.
The four looks behind the preset chips in Gel mode. Preset 1 is also what a first-time visitor sees. To make one: open Gel, tune it with the gear, tap Copy settings, and paste the text into a box below. Start from a built-in look fills a box with the current built-in values, so you can rename a preset or tweak one number. An empty box means that preset uses the built-in look. Changes reach visitors the next time they load /marble/; anyone with their own saved settings keeps them until they tap the preset or Restore defaults.
Soccer and Stream have no admin settings yet; each gets a tab here when it does.
Aircraft
Live aircraft near the page location (ADSBexchange via RapidAPI). Fetched on demand only while the homepage panel is visible, with a ~40s shared cache. RapidAPI Basic is a hard 10,000 requests/month cap, so the daily cap below is what keeps a month from draining in days. Usage + projection show in "API usage & limits" above. Leave disabled until the key is set in Secrets Manager.
The homepage panel loads once and does not auto-refresh; a "Refresh" button on it is shown to signed-in admins only.
Map views
Which views the panel offers. Visitors pick among the enabled set
(remembered per browser); "Map" is a vector geographic view with
US state outlines, rivers and lakes drawn from local data
(assets/usmap.js, ~53 KB gzip, loaded only when
first shown).
Reference layers
Drawn under the traffic on both views, kept deliberately quiet.
Airports: runway lines at their true headings, tagged with the
local identifier (towered / scheduled-service / paved ≥ 3,000 ft
fields; tap one for runways, frequencies and airspace). Airspace:
FAA Class B, C and D outlines (D hidden when zoomed out past 60 mi).
Both are static public-domain data loaded only when switched on
(assets/airports.js ~156 KB gzip,
assets/airspace.js ~88 KB gzip).