MyLifeFlow: Habit & Shifts ("App", "we", "our", "us") is developed and maintained by Anton Dimitrov ("Developer"). This Privacy Policy describes our practices regarding the collection, use, and protection of your information when you use our App.
By using MyLifeFlow, you agree to the terms of this Privacy Policy.
This Privacy Policy is provided in English only and governs your use of the App regardless of your device language setting.
MyLifeFlow is a locally-operated application. All data you enter — habits, shifts, finances, wellness entries, notes, emotions, and energy levels — is stored exclusively on your device in an encrypted local database (SQLite).
We do not:
You may voluntarily enter the following categories of data:
All of the above is stored only on your device and is never transmitted to us.
We explicitly do not collect:
Note on email and IP address: The App offers two places to add an email:
In both cases the address is processed identically: encrypted at rest with ECIES, decryptable only with the offline private key, never used for marketing, never sold or shared. Your IP address (encrypted) is recorded only when the Referral Program backend is contacted, for rate limiting and fraud detection. Outside these flows, neither is collected.
The App may automatically generate the following locally only, never transmitted:
None of this data leaves your device.
The App optionally uses biometric authentication via Apple's Local Authentication framework.
The App includes an optional Referral Program. When you open the "Refer a Friend" screen and use any of its features, a small amount of data is exchanged with our backend hosted on Cloudflare Pages Functions with a Cloudflare D1 database in the EU (Europe-East region). All other parts of the App remain fully local — using the Referral Program is your choice.
This section describes everything the Referral Program collects, how it is encrypted, who else processes it, and how long it is kept.
| Data | Why | How it is stored |
|---|---|---|
| Pseudonymous device hash (SHA-256 of your iOS Identifier-for-Vendor) | Prevents one device from generating multiple referral codes; lets us reattach an existing code after reinstall | Cleartext (no PII). Cannot be reversed back to your Apple ID or device serial. |
| Your 12-character referral code | Identifier you share with friends | Cleartext. Random characters; contains no information about you. |
| Email address — required if you participate in the Referral Program; optional if you only add it under Settings → Email verification | Required path: needed to attribute referrals to you and unlock rewards when a friend's paid subscription confirms. Optional path: notifications about your own subscription renewals. | Encrypted at rest with ECIES (256-bit elliptic-curve scheme). The decryption key is held offline on the operator's computer and never deployed to Cloudflare. A separate HMAC fingerprint allows duplicate-detection without ever decrypting the address. |
| IP address of every Referral Program request | Per-IP rate limiting and fraud detection | Encrypted at rest with the same ECIES scheme. Cleartext copies are not retained. |
| Device fingerprint metadata (model, iOS version, locale, timezone, User-Agent) | Forensic context if a referral is later disputed | Cleartext. Not personally identifying on its own. |
Apple appAccountToken (UUID v4 generated on your device) |
Lets Apple's Server Notifications V2 webhook tell our backend that a paid subscription occurred — so the right person earns the reward | Cleartext UUID. Not linked to your Apple ID. |
| A friend's referral code if you enter one | Records the pending claim until your first paid subscription confirms it | Cleartext. |
| Audit log entries for every Referral API call | Required to investigate disputes (e.g., a refund chargeback or a missing reward) | IP and free-form details encrypted; device metadata cleartext. |
What the Referral Program does NOT collect: your name, real address, phone number, payment method, behavioral analytics, location, contacts, photos, the contents of any other screen of the App, or any data outside the Referral screens.
Whenever you save an email — whether through the optional Settings card or the required Referral field — our backend issues a single-use 256-bit token, stores it for up to 24 hours, and asks Resend (a transactional email provider — see Section 15) to deliver a "Verify email" link to that address. Tapping the link from the same browser confirms ownership; the token is then marked used and cannot be replayed. Tokens that are not used within 24 hours expire automatically.
Why verification is required for the Referral Program: a verified email is the only reliable way to ensure that the address actually reaches you when a friend's paid subscription unlocks a reward, and it lets us refuse referrals that try to attach the same address to multiple referral codes (a common form of abuse). Without verification, we cannot guarantee reward notifications.
You may change your email at any time. The previous value is moved into an append-only history table (still encrypted) so we can deduplicate notifications across all addresses you have ever attached. We will not contact a superseded address again unless you re-attach it.
We do not use Referral Program data for advertising, profile-building, cross-app tracking, or sale to third parties. We do not run any analytics SDK and do not maintain a user-by-user profile beyond what this section describes.
You can erase every server-side trace of your participation in the Referral Program at any time, in two taps, without contacting us:
Settings → Data Management → Erase All Data
Tapping that button now does the following in a single transaction:
codes table.email_history.email_verifications.referrals (whether you were the referee or the referrer).rewards_granted.audit_log.appAccountToken.What we keep, and why: rewards already credited to other users who referred you (or who you referred) stay credited on their account — Apple's TOS and Section 6A.4 of our Terms both treat granted reward time as final. Their visibility into the relationship is anonymized once your row is gone (the referrer code becomes an orphaned reference). No personal data of yours remains.
What happens to pending claims: if a friend entered your code but had not yet completed a paid subscription at the moment you deleted, that pending claim disappears with the rest of your data. There is no working code for the friend's eventual purchase to attribute to, so no reward will fire on that side. Friends who had already crossed a milestone keep what they earned; friends who were still mid-funnel lose the link. The same applies in reverse: if you had entered a friend's code and your subscription had not yet confirmed at the moment of deletion, the pending claim disappears and you cannot retroactively re-attach it later.
If the deletion request fails to reach our backend (you're offline, or our server is briefly down), the local wipe still completes and the App will retry the server portion the next time it reaches the network. You may also re-tap the button to retry immediately. Where erasure is refused — which we don't expect to ever happen unless required by law — you have the right to lodge a complaint with the Bulgarian Commission for Personal Data Protection (KZLD, cpdp.bg) or your local supervisory authority.
The Referral Program described above runs on our Cloudflare backend. Independently of it, the App may in future offer optional iCloud sync of your local habit/shift/finance data through Apple CloudKit. As of this version, iCloud sync is not enabled in the consumer build. If we enable it in a future version, we will update this Privacy Policy and clearly mark it as opt-in.
All payment processing is handled by Apple StoreKit (iOS) or Google Play Billing (Android).
We receive from Apple/Google:
We do NOT receive:
All purchase data is stored locally on your device.
The App schedules local notifications for habit reminders and trial expiry alerts. These notifications:
Since all data resides on your device, you are solely responsible for:
The Developer bears no responsibility for data loss resulting from:
You are strongly advised to enable device backups and use the App's built-in export feature regularly.
Local data:
iCloud data (if sync enabled):
We do not retain any copy of your data on our systems at any time.
MyLifeFlow is not designed for or directed at children under 13 years of age. We do not knowingly collect personal information from children under 13. If you believe a child under 13 is using the App, please contact us immediately. Users between ages 13–17 must have parental consent prior to use.
If you are located in the EU, EEA, or United Kingdom, you have the following rights under the General Data Protection Regulation (GDPR):
Since we do not store data on servers, most rights are exercisable directly within the App.
Legal basis for processing: Consent (you voluntarily enter all data) and Legitimate Interest (local App functionality).
California residents have the right to:
The App uses the following platform-provided services. Each is engaged for a single, narrowly scoped purpose; none receives data outside that purpose.
International transfers. Cloudflare and Resend are US-headquartered providers operating global infrastructure. Where personal data of EU/UK/EEA users is transferred to the US, the transfer is covered by the EU Standard Contractual Clauses published by each provider, plus our supplementary technical measure of holding the ECIES decryption key offline outside both providers' systems. You may request a copy of the relevant SCCs by writing to us using Section 18.
Bulgarian Personal Data Protection Act (PDPA / Закон за защита на личните данни) compliance is maintained alongside GDPR. The Commission for Personal Data Protection (Комисия за защита на личните данни / KZLD / CPDP, https://www.cpdp.bg) is the supervisory authority for residents of Bulgaria.
We do not integrate:
We may update this Privacy Policy to reflect changes in law, App functionality, or our practices. Material changes will be communicated via an in-app notice. The "Last Updated" date at the top will always reflect the most recent revision. Continued use of the App after changes constitutes acceptance of the revised policy.
We have not appointed a Data Protection Officer (DPO). Under GDPR Article 37, a DPO is mandatory only for (a) public authorities, (b) controllers whose core activity involves large-scale, regular, and systematic monitoring of data subjects, or (c) controllers whose core activity involves large-scale processing of special categories of data (Art. 9) or criminal data (Art. 10). MyLifeFlow does not fall into any of these categories. For all data-protection inquiries you would otherwise direct to a DPO, contact us at [email protected].
For privacy-related questions, data subject requests (GDPR/CCPA), or concerns:
Email: [email protected]
Developer: Anton Dimitrov
Please include "Privacy Request" in the subject line. We aim to respond within 30 business days.
This Privacy Policy is governed by applicable international privacy laws, including GDPR, CCPA, and COPPA. Your local mandatory consumer protection rights are not affected.