-
Notifications
You must be signed in to change notification settings - Fork 0
Home
PumpSync is an iOS app and backend service that syncs Tandem Source insulin and carbohydrate data into Apple Health at the user's request. The project goal is a privacy-minimizing data portability tool with two backend access paths: PumpSync Hosted 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.
- 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
/apibase 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.
PumpSync supports:
- Tandem credential capture and validation from the iOS app.
- Hosted service access through the PumpSync Hosted auto-renewable subscription.
- Self-hosted access through a user-entered backend base URL.
- Synthetic demo/App Review mode through the backend's
SyntheticDemodata 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 processing configuration for daily sync work.
- 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.
- Getting Started
- Features and Modes
- Architecture
- Self-Hosting and Demo
- Backend Operations
- Testing and Verification
- App Store and Privacy
- Privacy Policy
- Contributing
Use the PumpSync website for user-facing support and policy pages:
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/- privacy policy, terms, data deletion request, and 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.
PumpSync documentation: iOS repository · Backend repository · Issues