Files
streba/README.md
T

1.8 KiB

Streba

The GPX analyser, reborn. A self-hosted web app for analysing GPX tracks and bagging Alpine peaks.

  • Accounts - anyone can sign up; activities and climbed peaks are per user.
  • Upload GPX files (drag & drop, multiple at once) - distance, ascent, moving time and an elevation profile are computed on the spot.
  • Activities - every track on a map with stats and an interactive elevation chart.
  • Worldmap - all your tracks together on the dashboard.
  • Peaks - the OSM peaks of the whole Alpine region on a map. Zooming out shows only the most notable summits (elevation, Wikipedia/Wikidata presence and tagged prominence decide); zooming in reveals the rest. Cross them off by hand, or let an uploaded track bag them automatically when it passes within 150 m of a summit.

Stack

  • SvelteKit (Svelte 5, TypeScript) with the Node adapter
  • SQLite via better-sqlite3 - the database lives in data/streba.db, no server setup needed
  • MapLibre GL for maps
  • Hand-rolled SVG elevation charts

Development

npm install
npm run dev

Production

npm run build
node build

Set STREBA_DATA_DIR to move the SQLite database somewhere else (defaults to ./data).

Peaks data

A fresh database is seeded with ~80 curated famous peaks so the app works out of the box. To load all named OSM peaks of the Alps (tens of thousands), run the importer once (and re-run whenever you want fresh OSM data):

node scripts/import-peaks.js

It fetches natural=peak nodes from the Overpass API for the Alpine bounding box, scores each peak for notability, precomputes the zoom level from which it appears on the map, and merges the curated seed peaks into their OSM counterparts without losing anyone's recorded ascents.