Replace the planner's Overpass proxy with a self-hosted POI index: - map-core POI categories become structured tag selectors (single source of truth) + osmium filter / classification helpers - planner.pois PostGIS table (centroid points, GiST + category indexes) - /api/pois serving route (session + same-origin + rate limit, 100 cap) - lib/pois.ts client (renamed from overpass.ts; GET, quantized bbox) - metrics: poi_api_requests_total + DB-collected index rows/age gauges; drop overpass_* metrics - remove /api/overpass proxy + dead OVERPASS_URLS on the planner service (Journal surface backfill still uses it via code default) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
32 lines
1.5 KiB
Text
32 lines
1.5 KiB
Text
# trails.cool infrastructure environment variables
|
|
# Copy to .env and fill in values
|
|
|
|
DOMAIN=trails.cool
|
|
# These three are REQUIRED for compose up — the production
|
|
# docker-compose.yml refuses to start without them. Generate strong
|
|
# random values; never reuse anything from this example file.
|
|
POSTGRES_PASSWORD=change-me
|
|
JWT_SECRET=change-me
|
|
SESSION_SECRET=change-me
|
|
S3_ACCESS_KEY=
|
|
S3_SECRET_KEY=
|
|
|
|
# Overpass upstream failover for the Journal's surface-breakdown backfill
|
|
# (route-surface-breakdown). Comma-separated list tried in order; first 2xx
|
|
# response wins. Falls back to the single-URL OVERPASS_URL if unset, and to a
|
|
# built-in default list if neither is set. The Planner no longer uses Overpass
|
|
# — its POI overlays are served from the self-hosted `planner.pois` index.
|
|
# OVERPASS_URLS=https://lz4.overpass-api.de/api/interpreter,https://overpass-api.de/api/interpreter
|
|
|
|
# Demo-activity-bot. Only enable in prod. When true, the journal worker
|
|
# bootstraps a demo user and generates public demo routes + activities
|
|
# every 90 min. Retention is in days (default 14).
|
|
# DEMO_BOT_ENABLED=true
|
|
# DEMO_BOT_RETENTION_DAYS=14
|
|
# DEMO_BOT_REGION={"bbox":[13.25,52.45,13.55,52.60]}
|
|
#
|
|
# Override the default Bruno persona (identity + generated copy) via
|
|
# either an inline JSON blob or a file path. See docs/demo-persona.md
|
|
# for the schema.
|
|
# DEMO_BOT_PERSONA=file:/etc/trails-cool/persona.json
|
|
# DEMO_BOT_PERSONA={"username":"hamish","displayName":"Hamish","bio":"...","locales":["en"],"content":{"names":{"en":["...","...","..."]},"descriptions":{"en":["...","...","..."]}}}
|