Privacy Policy
Effective May 3, 2026
Who we are
FamAlign is published by GoodEye Photography, sole proprietor Chris Schmauch, based in Watsonville, California, USA. Contact: chris@goodeyephotography.com.
What FamAlign does
FamAlign is an iOS application that aggregates calendar events from the user's connected calendar accounts (Apple Calendar via EventKit, Google Calendar via OAuth, etc.) and presents them grouped by family member. Each family member is represented by a "Person" record linked locally to a contact in your iOS Contacts app.
Data we access
Calendar events
FamAlign reads events from calendars you explicitly grant access to:
- Apple Calendar / EventKit: after granting Full Calendar Access in iOS Settings, FamAlign reads events from calendars you select inside the app.
- Google Calendar: if you connect a Google account in FamAlign, the app uses Google's OAuth flow to obtain a calendar.readonly token. The token is stored on-device in iOS Keychain. Calendar event data is fetched directly from Google's servers to your device — FamAlign servers are not involved.
FamAlign uses event data to render the calendar UI, generate widget snapshots, and (with your permission) schedule local notifications. Calendar event data is not uploaded to any FamAlign-owned server.
Contacts
FamAlign reads your iOS Contacts so you can link Person records to family members and display their photo + name. Only the contact identifier, display name, and photo of the contacts you explicitly link are cached locally; the rest of your address book is not stored.
Photos
You can attach a photo from your Photos library or take a new one with the camera and associate it with an event. FamAlign stores a reference (PHAsset.localIdentifier) and a small cached parse result locally; the photo bytes themselves remain in your Photos library and are not duplicated. If you delete a photo from Photos, the FamAlign attachment becomes a "Photo no longer available" placeholder.
Location
If you grant Location While Using permission, FamAlign uses your current coordinates to:
- Fetch weather forecasts from Open-Meteo (a free, public weather API). Only latitude and longitude are sent. No identifying data accompanies the request.
- Compute drive time and route preview to event locations via Apple Maps. This is handled by Apple's MapKit framework on your device.
- Resolve a "City, ST" label for the current weather header via Apple's reverse-geocoding service.
FamAlign does not log, store, or transmit your location to any FamAlign-owned server. Location data is held in memory and used only to drive the queries above.
Photos taken via the in-app camera
If you use the in-app camera to capture a photo for an event, the captured image is saved to your Photos library via PhotoKit. FamAlign does not retain a copy outside your Photos library.
Where data is stored
- On your device. SwiftData stores Person records, calendar bindings, photo attachment metadata, and Google account metadata locally.
- In your iCloud private database. SwiftData syncs the same records to your personal iCloud account so they propagate across your Apple devices. Apple's CloudKit handles transport and encryption; FamAlign cannot read other users' iCloud data.
- iOS Keychain. Google OAuth refresh tokens are stored in your device's Keychain, scoped to FamAlign and your user.
- App Group UserDefaults. Per-calendar preferences (hidden, locked, etc.) are stored in a shared App Group so the home-screen widget reads the same toggles.
What we do not do
- We do not run a FamAlign-owned server. There is no backend.
- We do not collect analytics, telemetry, or usage data.
- We do not include third-party advertising SDKs.
- We do not include third-party tracking SDKs.
- We do not sell, rent, or share your data with third parties.
- We do not aggregate, anonymize, or otherwise repackage your data — we never see it in the first place.
Third-party services
FamAlign communicates with the following third parties on your device's behalf when you use the corresponding features. Each is governed by its own privacy policy:
- Apple Inc. — EventKit, Contacts, PhotoKit, MapKit, CloudKit, Apple Push Notifications. Apple's privacy policy: apple.com/legal/privacy.
- Google LLC — Google Calendar API, only when you connect a Google account. Google's privacy policy: policies.google.com/privacy.
- Open-Meteo — public weather API, latitude + longitude only. Open-Meteo terms: open-meteo.com/en/terms.
Children's privacy
FamAlign is intended for users 4 and up (Apple's "4+" rating). The app does not knowingly collect personally identifiable information from children. Because the app does not transmit any data to FamAlign-owned servers, no personal information about any user — child or adult — is ever sent to or held by GoodEye Photography.
Your choices and rights
Access controls
You can grant or revoke FamAlign's access to Calendars, Contacts, Photos, Camera, and Location at any time in iOS Settings → FamAlign. Revoking access takes effect immediately; the app will gracefully degrade.
Disconnecting Google accounts
In FamAlign Settings → Accounts, tap "Disconnect" next to any connected Google account. This deletes the OAuth refresh token from your device's Keychain. You can also revoke FamAlign's access from your Google Account at myaccount.google.com/permissions.
Deleting your data
To delete on-device data: uninstall FamAlign. iOS purges the app's local storage automatically.
To delete iCloud-synced data: iOS Settings → [Your Name] → iCloud → Manage Account Storage → FamAlign → Delete Data. (FamAlign does not have access to this data either before or after deletion — it lives in your iCloud private database.)
Security
Because FamAlign stores all data on-device or in your iCloud private database, the security of that data is governed by Apple's platform protections: device-level encryption, iCloud private-database encryption in transit and at rest, Keychain protection. We do not have access to your device or your iCloud account.
Changes to this policy
If we change this policy materially, we will update the "Effective" date at the top and, where appropriate, notify users in-app. Past versions of this policy can be requested via the contact email below.
Contact
Questions, requests, or concerns: chris@goodeyephotography.com.