This policy explains what personal data the Freediver app ("Freediver", "we", "us") collects, why we collect it, how we use and share it, how long we keep it, and the rights you have over it. It applies to the Freediver mobile app and its backend service.
The data controller responsible for your personal data is [COMPANY_LEGAL_NAME]. For any privacy question or to exercise a right below, contact us at [CONTACT_EMAIL].
Freediver is not directed to children. You must be at least 16 years old to create an account. We ask you to confirm your age at sign-up. If we learn we have collected data from someone under the minimum age, we will delete it.
We practise data minimization: we collect only what the app needs to work. The categories are:
| Category | Examples | Why | Lawful basis (GDPR) |
|---|---|---|---|
| Account & identity | Email address, and a username you choose | To create and secure your account, and, if you choose to be findable, to let other divers find you by username | Contract |
| Dive & training logs | Depths, times, disciplines, breath-hold data, ratings, notes, and any dive-computer files you import | The core logbook: to store, display, and chart your own activity | Contract |
| Location | An optional home location, and coordinates of dive sites you add | To center your map and record where you dived — only when you provide it. Nobody else sees it unless you share it | Contract; sharing a place with another diver is your consent |
| Social | Connections, connection requests, blocks, and messages you send | To provide the connection and chat features you choose to use | Contract |
| Product analytics | A short list of in-app events, such as that a session was logged and its activity, or which screen you opened. Stored in our own database against your account for 90 days. Never free text, coordinates, another diver, or a dive value | To learn which features are used | Legitimate interest. Turn it off in Data & privacy, which also erases what was collected |
| Consent records | Which policy version you accepted and when | To prove lawful consent | Legal obligation / legitimate interest |
| Technical & diagnostic | App version, device/OS type, and error logs | To keep the app working and fix bugs | Legitimate interest |
Freediving logs describe physical performance (depth, breath-hold duration, heart rate from an imported device). Depending on where you live, some of this may be treated as health-related or otherwise sensitive data. We use it only to provide the logbook and the statistics you ask for. We do not use it for advertising, and we do not sell it. Where the law requires explicit consent for such data, your use of the logging features and your acceptance of this policy constitute that consent, which you may withdraw at any time by deleting the data or your account.
Apple Health. If you import dives from Apple Health, we read only underwater depth and water temperature, and only when you tap to import a day, after you have allowed it in iOS. That is health data, so we read it only with your explicit consent (GDPR Art. 9), given twice: the iOS permission and the import you tap. Withdraw it in the Health app at any time. Dives already imported stay in your logbook until you delete them or your account.
We use your data to: operate the logbook and statistics; provide the map, events, and social features you choose to use; secure your account and prevent abuse; respond to your requests; and meet legal obligations. We do not sell your personal data, and we do not use it for third-party advertising or cross-context behavioural advertising. We do not use your data for automated decision-making that produces legal or similarly significant effects.
We share personal data only in these limited cases:
@username is visible to
your connections and to people you share a chat, event or course with. Other divers can find it by
search only if you choose to be findable, which is off by default. Your real name and photo reach
only your connections. Content you explicitly share (a message, or an item you share into a chat) is
visible to the people you share it with. You control this through the app's privacy and sharing
controls.We keep a note of which of these you use to sign in — “apple”, “google” or an email address and password — and nothing else about the sign-in. It is the same fact your sign-in already tells us; we now store it so that your data export can tell you how you sign in, explain a forwarding address if you have one, and name the provider whose settings page is where you disconnect us. It is deleted when you delete your account.
These are every company that receives your personal data as part of running Freediver. We name each one, what it receives, and where it processes it. Where we have not established the processing region, the table says so rather than leaving it blank — a gap you can see is more useful to you than one you cannot.
| Provider | What it receives | Where it processes |
|---|---|---|
| Supabase | Sign-in credentials and your email address; your whole logbook and account data; your profile photo | Canada (Montréal region), for our development project. The region of the live project is not recorded |
| Fly.io | Runs our API, so it handles every request you make and the responses, including server logs | Canada (Toronto) |
| Expo | Delivers push notifications and app updates. Receives your device's push token,
the @username of whoever acted, sometimes an event title, and an unread count.
Not message text, coordinates, real names or email addresses | Not recorded |
| Apple and Google | The same push notification, delivered to your device. They also distribute the app | Not recorded |
| Apple, when you choose “Continue with Apple” | Only what signing you in needs: which app is asking, a one-time code that stops the sign-in being replayed, and a request for your name and email. Apple tells us an identifier for you, your email address, and your name the first time only. If you choose to hide your email, Apple gives us a forwarding address instead of your real one — we treat it exactly like any other email address, and it is deleted with your account. We never see your Apple password. You only reach Apple at all if you tap that button | Not recorded |
| Google, when you choose “Continue with Google” | Only what signing you in needs: which app is asking, and a request for your name and email. Google tells us an identifier for you, your email address, whether that address is confirmed, and your name. We never see your Google password, and we do not take your Google profile picture — your photo here is only ever one you chose. You only reach Google at all if you tap that button | Not recorded |
| GitHub | Feedback you choose to send: your own text, plus app and build details, and a one-way reference that lets us group your reports without identifying you. No email address, no username, no screenshot. Treat feedback as public: the issue it becomes may be visible to anyone, and deleting your account does not delete it | Not recorded |
| komoot | When you search for a place on the map, the words you typed, your app language, and roughly where the map was looking (rounded to about 11 km). Never your own location, your dive sites or who you are; the request comes from our server, not your device. komoot runs the place-name service (Photon, built on OpenStreetMap) and may log requests | Not recorded |
| Cloudflare Pages | Serves the web app at app.freediverapp.com, so it sees
your IP address and which files your browser requests | Not recorded |
| Cloudflare Web Analytics | Counts page views and referrers on the web app. Uses no cookies and stores nothing on your device | Not recorded |
| OpenFreeMap | Serves the default map tiles, so it sees which area of the map you are looking at and your IP address | Not recorded |
| Esri | Serves the depth and satellite map layers, when you turn one on. Sees the same as above | Not recorded |
| Resend | Sends the emails your account needs: sign-up confirmation, password reset and email change. Receives your email address and that message. Runs on Amazon SES | United States |
| Cloudflare Email Routing | Forwards any email you send to a
@freediverapp.com address | Not recorded |
| Google (Gmail) | Holds the email you send us, in the mailbox that address forwards to | Not recorded |
Your data is processed outside the European Economic Area — Canada at least, and other countries where the providers above operate.
We rely on each provider's own published data-protection terms. We have not signed our own data-processing agreements with them, and we have not put Standard Contractual Clauses or an adequacy assessment in place. We are telling you this plainly because a privacy policy that names a safeguard we do not have would be worse than one that names none.
This is one of the things our privacy review before public launch is for.
We keep your account and log data for as long as your account is active. When you delete your account, we erase your private logbook and social graph promptly. Some data is kept longer where we have a legal basis: content reported for abuse may be retained for moderation and legal-claims purposes, for 12 months. Messages you sent are replaced with “message removed”, and the conversations you were in keep a “Deleted account” in your place. A dive shop you published stays published, with its contact details removed. Backups are cycled out on a rolling schedule.
Depending on where you live (for example under the GDPR, UK GDPR, or the California CCPA/CPRA), you have some or all of these rights:
To exercise a right you can use the in-app tools or contact [CONTACT_EMAIL]. We will respond within the time the law requires.
We protect your data with encryption in transit and at rest, access controls, and least-privilege practices. Authentication is handled by our identity provider; we never store your password. The person who runs Freediver holds the database credential, which reaches all stored data; its use is not logged. There is no admin screen, and the one operator tool deletes a conversation without reading its messages. No system is perfectly secure, but we work to protect your data and will notify you and the relevant authorities of a breach where the law requires.
We may update this policy. When we make a material change we will update the version and effective date above and, where appropriate, ask you to review or re-accept it. Continued use after an update means you accept the revised policy.
Questions or requests: [CONTACT_EMAIL]. Data controller: [COMPANY_LEGAL_NAME]. Governing jurisdiction: [GOVERNING_JURISDICTION].