bratislavametro surface recorder

Batro

Mobile app download page placeholder for a future iOS app that records skate ride traces and surface quality for the Bratislava Metro rideability layer.

Back to map

iOS app planned

Download Batro

App Store/TestFlight build is not ready yet. This page is the product/design plan for the first useful version: open map, press record, capture a ride/surface trace, then export/upload JSON for review before it becomes a public surface layer.

Core flow

  1. Open Batro before riding a street, path or spot-to-spot route you want to map.
  2. Tap Record position before riding or walking the route.
  3. Batro logs coordinates every few seconds with time and GPS accuracy.
  4. Stop recording and preview the trace as a polyline.
  5. Export JSON for import/review in bratislavametro.sk.

iOS TODO / design plan

  • Create a tiny iOS app shell called Batro with a map-first home screen.
  • Add precise location permission flow with clear copy: used only while recording a route.
  • Build a Record position mode with start, pause, resume, stop and discard controls.
  • Sample GPS points on a fixed interval and keep timestamp, latitude, longitude, accuracy, speed and heading when available.
  • Show the recorded polyline live on the map so a rider can see where the surface trace was captured cleanly.
  • Export the ride as JSON and prepare an upload path into bratislavametro.sk for manual review before it becomes a public map layer.
  • Add battery/accuracy guardrails: background recording notes, low accuracy warning and max session length.

Recording data shape

Keep the format boring and reviewable: one recording session, metadata, then ordered GPS points. The web app can later draw it as a candidate rideability/surface trace before publishing.

JSON
{
  "schema": "batro-surface-trace-v1",
  "recordedAt": "2026-06-04T16:24:00.000Z",
  "source": "ios",
  "purpose": "rideability-surface-layer",
  "points": [
    {
      "timestamp": "2026-06-04T16:24:04.000Z",
      "lat": 48.14861,
      "lng": 17.10775,
      "accuracyM": 4.8,
      "speedMps": 3.1,
      "headingDeg": 84
    }
  ]
}