SSI Sync Logo

SSI Sync

A mobile-first PWA that pulls dives from Garmin and Suunto and uploads them straight into your My SSI logbook.

TypeScript
Vercel
PWA

Try it yourself

Key Features

  • Auto-syncs completed dives from a connected Garmin or Suunto account.
  • Manual Suunto DeviceLog JSON import as a backup path.
  • Parses depth, duration, temperature, and GPS from each dive.
  • Suggests nearby SSI dive sites from the dive's GPS data.
  • Skips dives already uploaded, so re-syncing stays safe.
  • Installable as a PWA for a native-feeling mobile workflow.

Development

SSI Sync is a TypeScript PWA bundled with esbuild and deployed on Vercel. Neither Garmin nor Suunto offers a public personal API, so their integrations were built from scratch rather than relying on unofficial libraries.

A good part of the work is in data quality: reconciling conflicting readings between a watch's summary and its raw export, deduplicating dives across sync batches so a re-sync never creates doubles, and handling edge cases like missing GPS or inconsistent site matches.

Role & Impact

I designed and built SSI Sync end-to-end - from the Garmin and Suunto integrations to the PWA frontend and deployment - and have refined it over months of real dive trips, working out edge cases in duplicate detection, GPS handling, and device quirks along the way. It started as a personal tool to stop re-entering dives by hand, and it's now the workflow I use after every dive.

Access is invite-only. If you'd like to try it, reach out at hello@jeromesommerfeldt.de.