Skip to content
Eric Slutz edited this page Aug 13, 2026 · 11 revisions

PumpSync

PumpSync is an iOS app and backend service that syncs Tandem Source insulin and carbohydrate data into Apple Health when the user starts a sync and, after initial setup, automatically checks for any pump data not yet synced when the app opens and during iOS background refresh opportunities. PumpSync aims to keep Apple Health less than four hours behind, but iOS may delay background work. The project goal is a privacy-minimizing data portability tool with two backend access paths: PumpSync through an App Store subscription, or a user-managed self-hosted backend.

The iOS app lives in eslutz/PumpSync. The backend source of truth is PumpSync.backend, currently published as eslutz/PumpSync-Backend. This wiki is the shared project documentation hub for both repositories.

Project Principles

  • Keep the iOS repository frontend-only: app code, App Store/TestFlight metadata, screenshots, and app legal docs.
  • Keep backend API code, Docker/Compose, Azure Container Apps infrastructure, backend workflows, data deletion tooling, and hosted/demo operations in the backend repository.
  • Treat Tandem credentials and pump data as sensitive health-adjacent data: store credentials only on device and avoid durable backend storage of Tandem credentials, Tandem tokens, raw Tandem events, or normalized health samples.
  • Use Apple frameworks on iOS: SwiftUI, HealthKit, StoreKit, Keychain, BackgroundTasks, MetricKit, OSLog, and App Intents.
  • Use the same backend API, contracts, services, and normalization code for hosted service, real self-hosting, and synthetic demo/App Review mode.
  • Keep hosted, demo, and self-host app-entered backend URLs aligned to the /api base URL contract. The app appends /v1/...; the backend exposes /api/v1/....
  • Do not add hosted-subscription bypasses, production allowlists, or backend shortcuts unless the maintainer explicitly asks for them.

Current Status

PumpSync supports:

  • Tandem credential capture and validation from the iOS app.
  • Hosted service access through the PumpSync auto-renewable subscription.
  • Self-hosted access through a user-entered backend base URL.
  • Synthetic demo/App Review mode through the backend's SyntheticDemo data source.
  • Syncing Tandem insulin and carbohydrate samples into Apple Health after HealthKit permission is granted.
  • Local duplicate prevention through a rolling external-ID ledger.
  • Background refresh configuration that checks for any pump data not yet synced and aims to keep Apple Health less than four hours behind when iOS grants background time.
  • Privacy, terms, data deletion, accessibility, and App Store submission evidence in the iOS repository.
  • ASP.NET Core backend deployment as a container image for Azure Container Apps or any Docker host.
  • Hosted production/nonprod images in private GitHub Container Registry and public self-host/demo images in GitHub Container Registry.
  • Backend data deletion tooling for hosted Azure Table Storage and self-host SQLite.

Wiki Pages

Public Website

Use the PumpSync website for user-facing support and policy pages:

Source Documents

The source repositories remain authoritative for implementation details:

  • PumpSync/README.md - iOS repository scope, backend routing, build/test commands, and StoreKit routing.
  • PumpSync/AGENTS.md - iOS maintainer and agent workflow policy.
  • PumpSync/project.yml - XcodeGen source of truth for schemes, configurations, API base URLs, entitlements, and Info.plist values.
  • PumpSync/docs/app-store/ - App Store evidence, accessibility answers, and screenshot support.
  • PumpSync/docs/legal/ - pointers to the website's Privacy Policy, Terms of Use, and Account/Data Deletion pages, plus repo-local App Store privacy notes.
  • PumpSync.backend README - backend repository scope, modes, routes, and validation commands.
  • PumpSync.backend docs - Docker self-hosting, Azure Container Apps, synthetic demo, configuration, security/privacy, and data deletion runbooks.

License

PumpSync source is available under the PolyForm Noncommercial License 1.0.0. The app and backend repositories carry the identical license: noncommercial use including personal self-hosting is permitted, and commercial use is reserved by the copyright holder.

Clone this wiki locally