ais_bridge.py: a small daemon holding the aisstream.io websocket (free key, server-side only), tracking every vessel heard (15-min freshness window) and atomically writing ais_snapshot.json into the web root every 20 s. The js/layers/ais.js layer polls that static file — no request-path server code, identical under dev serve.py and prod nginx; rolling query bucket defeats CDN caching. Verified locally: 15,844 live vessels within minutes of connect — the Dover Strait separation lanes are visibly full of real traffic; click any ship for name/MMSI/type/speed/course/status/destination (colored by type: cargo green, tanker amber, passenger blue, fishing purple, anchored grey). Live-only (hidden when scrubbed). Demo ships demoted to default-off; the dormant browser-side AIS scaffold in ships.js stays inert (key would be browser-exposed — the bridge supersedes it). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
13 lines
338 B
Plaintext
13 lines
338 B
Plaintext
.DS_Store
|
|
*.pyc
|
|
__pycache__/
|
|
# Local recorder database (record.py) — dev-only, never committed or deployed.
|
|
data/
|
|
# Secrets — API credentials must never be committed or deployed (server-side only).
|
|
openskycredentials.json
|
|
*credentials*.json
|
|
*.secret
|
|
.env
|
|
# Generated by ais_bridge.py — live data, never committed.
|
|
ais_snapshot.json
|