Effective Date: 2026-05-08
Privacy Policy
Life Time Ledger is built on a simple promise: your time, your records, your control. This policy explains what data we touch, why, and the rights you have over it.
1. Who We Are
Life Time Ledger (the "App") is published by Peng Zhang (the "Operator"), a sole-proprietor developer based in Shenzhen, China, doing business under the brand getzed.app.
- Contact email: hello@getzed.app
- Website: https://getzed.app
- App Store Listing Name: Life Time Ledger
- Bundle Identifier:
app.getzed.lifetime
We act as the data controller for personal data processed through the App. For users in the EU, we do not currently have an EU representative; you may contact us via the email above for any GDPR-related request.
2. What Data We Collect
We collect the minimum data necessary to operate the App. Data collection is grouped into four scopes:
2.1 Data You Provide (Local Only)
The following data is stored only on your device (via SharedPreferences) and is never transmitted to any server unless you explicitly enable Cloud Sync (Section 2.2):
| Category | Examples |
|---|---|
| Personal attributes | Birth date, expected lifespan, graduation/retirement age, life mode preference |
| Time tracking | Custom time categories (label / emoji / color), daily time allocation records, notes |
| Milestones | Custom milestones (name, date, emoji, optional notes) |
| Footprints | Place names, regions, visit dates, optional notes |
| Health check-ins | Daily exercise level (0–3), sleep hours, mood (1–5), stress (1–5), optional notes |
| Health assessment | Gender, region (general), health habit assessment answers, calculated baseline/bonus age |
| App preferences | Theme (light/dark/system), language (Chinese/English/system), notification preferences |
2.2 Data You Choose to Sync (Cloud Sync, Opt-In)
If you create an account and enable Cloud Sync, the data above is mirrored to our backend on
Supabase (project region: Tokyo, Japan, ap-northeast-1). The data is stored in
6 tables: profiles, time_categories, milestones, daily_records,
footprints, health_check_ins. Each row is gated by
Row-Level Security (RLS) policies enforced by Supabase: only the authenticated owner of a row
can read or write it.
Authentication is handled by Supabase Auth:
- Email + password sign-in: We store your email address in Supabase's
auth.userstable. - Sign in with Google (OAuth): When you choose Google sign-in, Google receives a sign-in event
from
accounts.google.com. We then receive an ID token from Google and create a Supabase session. We do not access your Google contacts, calendar, drive, or any other Google service. - Sign in with Apple: When you choose Apple sign-in on Apple platforms, Apple handles the native authentication flow and may share your Apple account email address (or a private relay address, if you choose Hide My Email) with Supabase Auth so we can create your account session.
Legal basis (GDPR): Article 6(1)(b) — performance of contract (you signed up to use Cloud Sync).
2.3 Data Collected Automatically (Anonymous)
The following data is collected without linking to your account or identity:
| Service | Data | Purpose |
|---|---|---|
Sentry (sentry.io) | Error stack traces, app version, OS version, anonymous session ID, breadcrumbs of user interactions in the app | Crash reporting and bug fixing |
PostHog (us.i.posthog.com) | App lifecycle events (open / background), screen tab switches, custom events (onboarding_completed, health_assessment_completed), anonymous distinct ID generated by PostHog SDK | Product analytics (understand which features are used) |
Update check (raw.githubusercontent.com) | HTTP GET to a static JSON file. GitHub's CDN logs your IP address and user-agent | Version comparison for in-app upgrade prompt |
- We do not call
Sentry.setUser()orPostHog.identify(). Your account ID, email, and Supabase user_id are never sent to Sentry or PostHog. - Sentry's
sendDefaultPiioption is set tofalse, and abeforeSendhook strips any user context. - PostHog's
health_assessment_completedevent records only the fact of completion; the calculated predicted age is not included. - We can disable Sentry/PostHog at compile time by leaving the corresponding environment variable empty.
Legal basis (GDPR): Article 6(1)(f) — legitimate interest (operating and improving the App). For EU users, you may opt out of PostHog tracking by contacting us; technical opt-out via in-app toggle is on our v1.5 roadmap.
2.4 Data You Send Us by Email Feedback
When you tap "Send feedback" in App Settings, the App opens your system mail client with a draft addressed to hello@getzed.app. The draft includes:
- The text you write
- App version + build number
- Operating system name + version
- Your selected life mode
- Submission timestamp (ISO 8601)
The email is sent via your own mail client (Gmail, Outlook, Apple Mail, etc.); we receive the
email at hello@getzed.app (which is forwarded by Cloudflare Email Routing to the Operator's personal
Gmail). You can review and edit the draft before sending.
3. How We Use Your Data
| Purpose | Data Categories | Legal Basis |
|---|---|---|
| Render visualizations of your remaining time | Birth date, lifespan, life mode | Contract (GDPR 6(1)(b)) |
| Compute and display the health assessment | Health questionnaire, daily health check-ins | Explicit consent (GDPR 9(2)(a) / PIPL 28) |
| Sync your data across devices | All Section 2.2 data | Contract |
| Send you reminders (daily check-in, anniversary) | Notification preferences (local only) | Consent (you toggle the switch in Settings) |
| Reply to your feedback | Email content + auto-attached metadata | Legitimate interest |
| Diagnose crashes and improve the App | Anonymous Sentry/PostHog data | Legitimate interest |
We do not use your data for:
- Targeted advertising
- Selling, renting, or trading to third parties
- Profiling that produces legal effects on you
- Training machine learning models
4. Who We Share Data With
We share data only with the following service providers ("processors") strictly to operate the App:
| Processor | Purpose | Data Region | Privacy Policy |
|---|---|---|---|
| Supabase, Inc. | Cloud Sync backend, authentication | Tokyo, Japan | supabase.com/privacy |
| Google LLC (Sign in with Google) | OAuth authentication | Global | policies.google.com/privacy |
| Apple Inc. (Sign in with Apple) | Native authentication | Global | apple.com/legal/privacy |
| Sentry (Functional Software, Inc.) | Crash reporting | USA | sentry.io/privacy |
| PostHog Inc. | Product analytics | USA | posthog.com/privacy |
| GitHub, Inc. | Static version-check file hosting | Global CDN | GitHub Privacy |
| Cloudflare, Inc. | Email Routing for hello@getzed.app | Global | cloudflare.com/privacypolicy |
| Google LLC (Gmail) | Operator's mailbox for receiving feedback | USA / Global | policies.google.com/privacy |
We do not sell your personal information to any third party. We do not share your data with advertising networks.
5. International Data Transfer
The App is published from China but operates a global service:
- Cloud Sync data is stored in Tokyo, Japan (Supabase ap-northeast-1).
- Sentry and PostHog process data in the United States.
- For EU/UK users, data may be transferred outside the EEA. We rely on Standard Contractual Clauses offered by these processors.
- For users in mainland China, the Operator complies with PIPL Article 38 for cross-border transfers; the data minimization in Section 2.3 (no user identifier sent to Sentry/PostHog) aligns with PIPL Article 39.
6. Data Retention
| Data | Retention |
|---|---|
| Local-only data (SharedPreferences) | Until you uninstall the App or clear App data |
| Cloud Sync data (Supabase) | Until you delete your account in App Settings → Account → Delete Account, which immediately and permanently deletes all 6 tables of your data via a delete_my_account() server-side RPC |
| Sentry error reports | 90 days (Sentry default) |
| PostHog events | 7 years (PostHog default; we do not extend) |
| Email feedback | Stored in the Operator's Gmail mailbox; deleted upon written request |
Account deletion is irreversible. You may export your data first via App Settings → Data → Export (JSON file).
7. Your Rights
Depending on your jurisdiction, you have the following rights:
7.1 GDPR (EU/EEA/UK)
You have the right to:
- Access the personal data we hold about you (Article 15)
- Rectify inaccurate data (Article 16)
- Erase your data (Article 17 — "Right to be Forgotten") — exercisable directly via App Settings → Account → Delete Account
- Restrict processing (Article 18)
- Data portability (Article 20) — exercisable directly via App Settings → Data → Export
- Object to processing based on legitimate interest (Article 21) — including PostHog analytics
- Withdraw consent at any time (Article 7(3))
- Lodge a complaint with your local Data Protection Authority
7.2 CCPA / CPRA (California, USA)
You have the right to:
- Know what personal information is collected, used, shared, or sold
- Delete your personal information (exercisable via App Settings → Account → Delete Account)
- Opt-out of sale — we do not sell personal information; this right does not apply
- Non-discrimination for exercising any of the above
7.3 PIPL (China)
您享有以下權利:
- 查閱、複製您的個人資訊
- 更正、補充不準確的個人資訊
- 刪除個人資訊(透過 App「設定 → 帳戶 → 刪除帳戶」直接行使)
- 撤回同意 — 您可在「設定」中關閉雲端同步、通知等功能
- 携帶個人資訊(資料可攜權)— 透過 App「設定 → 資料 → 匯出」行使
- 對於健康問卷等敏感個人資訊,您隨時可選擇不同步至雲端
To exercise any right, contact us at hello@getzed.app with the subject
[Privacy Request] <your request type>. We will respond within 30 days
(GDPR / CCPA) or 15 working days (PIPL).
8. Children's Privacy
The App is not directed at children under 13 (or 16 in the EEA). We do not knowingly collect personal data from children. If you believe a child has provided us with data, contact hello@getzed.app and we will delete it.
The health assessment includes age-related questions but does not target minors; we recommend the App for users 18 and older.
9. Security
- Cloud Sync uses TLS 1.2+ in transit between the App and Supabase.
- Supabase data is encrypted at rest using AES-256.
- We use Row-Level Security (RLS) policies on every table to ensure data isolation between users.
- Authentication tokens are stored in iOS Keychain / Android EncryptedSharedPreferences by the Supabase SDK.
- Local data on your device is protected by your device's lock-screen passcode/biometric. Local data is not encrypted at rest by the App itself; jailbroken/rooted devices may expose it.
We do not guarantee absolute security — no system is invulnerable — but we apply industry-standard practices to minimize risk.
10. Changes to This Policy
We may update this Privacy Policy. The "Effective Date" at the top reflects the latest revision. Material changes (e.g., new data category, new processor, change of legal basis) will be announced:
- In-App via a one-time prompt before continued use
- On the public URL https://getzed.app/privacy/
Continued use of the App after the Effective Date constitutes acceptance of the revised Policy.
11. Contact
| Topic | Contact |
|---|---|
| Privacy requests, data subject rights | hello@getzed.app |
| Security disclosures | hello@getzed.app (subject: [Security]) |
| General feedback | hello@getzed.app |
The Operator (Peng Zhang) is the data controller. We do not have a designated Data Protection Officer due to the scale of data processing, but the Operator personally responds to all privacy inquiries within the timeframes stated in Section 7.