-
Notifications
You must be signed in to change notification settings - Fork 0
Getting Started
This page is for contributors setting up PumpSync locally. PumpSync has two code repositories:
-
eslutz/PumpSync: iOS app, App Store/TestFlight metadata, screenshots, app legal docs, and iOS CI. -
eslutz/PumpSync-Backend: PumpSync.backend source repository for the ASP.NET Core backend API, Docker/Compose self-hosting, Azure Container Apps infrastructure, backend workflows, data deletion tooling, and hosted/demo operations.
For the iOS app:
- macOS with a current Xcode install that supports the iOS 26.0 deployment target.
- Xcode command line tools selected with
xcode-select. - XcodeGen installed locally.
For the backend:
- The .NET SDK version pinned by
global.json. - Docker for container/self-host validation.
- Azure CLI and Bicep for hosted infrastructure validation.
Install XcodeGen once:
brew install xcodegengit clone https://github.com/eslutz/PumpSync.git
git clone https://github.com/eslutz/PumpSync-Backend.gitOn maintainer workstations, use PumpSync.backend as the local backend checkout name. If an older local checkout still uses the previous demo-era directory name, rename it after confirming its remote is https://github.com/eslutz/PumpSync-Backend.git.
From the iOS repository:
xcodegen generate
xcodebuild -list -project PumpSync.xcodeproj
xcodebuild test -project PumpSync.xcodeproj -scheme PumpSync -destination 'platform=iOS Simulator,name=iPhone 17,OS=latest'project.yml is the XcodeGen source of truth for schemes, configurations, build settings, entitlements, and generated project files. Do not hand-edit generated Xcode project or scheme files unless XcodeGen cannot represent a setting.
Run xcodegen generate after adding, deleting, or renaming source/resource files or changing project settings.
From the backend repository:
dotnet restore PumpSync.Backend.slnx
dotnet build PumpSync.Backend.slnx
dotnet test PumpSync.Backend.slnxRun the API directly (a bare dotnet run fails startup validation — the signing key is required and the default Hosted mode expects Azure storage):
PumpSync__BackendMode=SelfHosted \
PumpSync__DataSourceMode=SyntheticDemo \
PumpSync__StorageProvider=Sqlite \
SqliteStorage__DatabasePath=./pumpsync.db \
PumpSync__ServiceTokenSigningKey=$(openssl rand -base64 32) \
ASPNETCORE_URLS=http://localhost:8080 \
dotnet run --project src/PumpSync.Api/PumpSync.Api.csproj
curl http://localhost:8080/api/v1/capabilities
curl http://localhost:8080/healthRun the synthetic demo container (the placeholder signing key in .env.example must be replaced — the backend refuses to start with it):
cp .env.example .env
sed -i.bak "s#^PumpSync__ServiceTokenSigningKey=.*#PumpSync__ServiceTokenSigningKey=$(openssl rand -base64 32)#" .env
rm .env.bak
docker compose up --build
curl http://localhost:8080/api/v1/capabilities
curl http://localhost:8080/healthPumpSync app-entered backend URLs should include /api unless a reverse proxy intentionally maps the backend API at the domain root. The app appends /v1/... endpoint paths.
Public docs intentionally avoid listing live hosted backend endpoint values. Use the iOS project.yml configuration when working in the app repository, and use backend deployment outputs or trusted operator notes when validating hosted environments.
| Use | Base URL |
|---|---|
| Local Docker/API | http://localhost:8080/api |
| Public demo | https://demo.pumpsync.ericslutz.dev/api |
PumpSync documentation: iOS repository · Backend repository · Issues