Privacy Policy — Piscary
Publisher: Morgane Garnier — sole trader (micro-enterprise), trading as KreaRise SIREN: 994 232 130 Registered office: 18 chemin de Meaux, 93360 Neuilly-Plaisance, France Contact: contact@piscary.app Last updated: September 16, 2026 App version: 1.0.2
Piscary is a bilingual (French / English) mobile fishing logbook. This policy describes, honestly and specifically to this app, what data we process, why, where it is stored, and what your rights are. We are established in the European Union and apply the General Data Protection Regulation (GDPR).
Core principle: an account is required, but the app still works offline
As of version 1.0, an account is required to use Piscary. Account creation relies on Supabase (see “Third-party services”) and requires a verified email address.
The app is still local-first: your data is first saved on your device — so you can log a catch with no connection, at the water’s edge — then synced to your account when a network is available. In practice, your catch journal, your photos, your statistics, your challenges and badges, and your gear are kept locally (both for offline display and as an upload queue) and synced to our servers.
Data we process
1. Data stored locally on your device (cache & offline)
This data is kept in the app’s private storage (the app sandbox Piscary
folder) for offline display and as an upload queue; it is also synced to your
account (see section 3):
- Catch journal: species, fish name, date and time, notes, length, weight, technique, place name (private and public), and the location privacy setting.
- Catch photos: saved as files in the app’s
photos/folder. - Catch location: GPS coordinates (latitude / longitude) attached to a catch when you add them.
- Gear: rods, reels and combos you enter (names and optional photos).
- Settings: language, display preferences, challenge and badge progress, local alert setting.
2. Location
-
Catch location: with your permission, the app reads your current position (“balanced” accuracy, ~100 m) to pre-fill a catch’s place. These coordinates are stored locally. If you are signed in and share the catch, they are transmitted according to the catch’s privacy setting (see below).
-
Fishing-spot location: the coordinates of a point you look up are sent to Open-Meteo to retrieve weather, tides and river flow, in order to compute the fishing-conditions score.
-
Reverse geocoding: to turn coordinates into a human-readable place name (city, region), the app relies solely on the device operating system’s geocoder — Apple on iOS, Google on Android. Those coordinates are processed by the platform under its own policy; they do not pass through our servers, and no third-party geocoder is called as a fallback.
-
Fishing-spot search: when you type a place name to find a spot, that text passes through our servers (Supabase, EU), which answer from our own database of place and waterway names (OpenStreetMap data via Overture Maps, hosted in the EU alongside the rest of our data). No third-party geocoder is queried.
Why it goes through our servers: that database of place and waterway names is too large to ship inside the app. Our servers receive the text searched and, if there is one, the centre of the map on screen — used only to disambiguate identical names. No search cache is kept: the answer is recomputed on every request.
Catch location privacy — for each catch, you choose:
- Private: the location is not shared with others (you always keep your own exact coordinates).
- Public: your exact location is shared with the audience you chose for the catch.
3. Data processed on our servers (account required)
Because an account is required to use the app, the following data is processed on our servers. Authentication and storage are powered by Supabase (see “Third-party services”).
- Account: email address and password (authentication is handled by Supabase; the password is hashed server-side and we never have access to it in plain text).
- Profile: display name / username, avatar (profile photo), total points.
- Synced catches: the catches you sync (species, name, date, notes, length, weight, technique, place name, and coordinates according to each catch’s chosen privacy setting) are stored in the Supabase database.
- Catch photos: uploaded to Supabase Storage (bucket
catch-photos) only when you are signed in. Photos are resized (max 1920 px) and compressed before upload. - Species recognition (on demand): if you use “Identify a fish”, the chosen photo is sent to our image-analysis server (hosted in France) for the time needed to compute a visual signature; the analysis server keeps nothing. We record the suggestions made and your choice to measure the quality of the service.
- Recognition improvement (consent-based, off by default): if you enable “Help improve
recognition” in Settings, two sources feed the recognition database: (1) the visual
signature of your synced catch photos (a vector of numbers from which the photo cannot
be reconstructed), linked to the species you entered; (2) when you confirm or correct
an identification in “Identify a fish”, the submitted photo is kept in a private space
(bucket
identify-photos) together with its signature and the species you chose, so that the identification can be checked. Photos left unanswered are deleted within 24 hours; those whose signature was rejected, within 90 days. You can turn this off at any time; deleting your account erases both photos and signatures. - Synced gear: rods, reels and combos.
- Social features: if you publish a catch as “public” or “friends”, your username, avatar and the catch become visible to the chosen audience. We also process likes, comments, and friendships (requests / acceptances).
- Moderation: if you report content or block a user, we record your identifier, the identifier of the targeted content or user, and the reason you give, in order to handle the report.
- Remote notifications (only if you allow them): your device’s notification token, its platform and the device language are stored on our servers so we can tell you that one of your catches was liked or commented on, or that someone followed you. The token is removed when you sign out and erased with your account. Delivery goes through the Expo service (see “Third-party services”).
- Account deletion: see “Your rights” (immediate and permanent erasure).
4. Advertising (free users)
The app shows advertising via Google AdMob, in the “App Open” format (open screen), only to free users: Piscary Pro subscribers see no ads.
- Ads are non-personalized only: no profile-based ad targeting, no cross-app tracking (in the sense of Apple’s “App Tracking Transparency” feature), no access to the IDFA on iOS, and no App Tracking Transparency prompt.
- To serve these ads, the Google AdMob SDK may process device / advertising
identifiers and technical information (device model, IP address,
diagnostics and anti-fraud signals). This data is processed by Google as the
advertising provider (see Google’s privacy policy:
policies.google.com/privacy). - Consent (GDPR): if you are in the EEA or the UK, a consent form (Google UMP / consent management platform) is presented before any ads are loaded.
5. Piscary Pro subscription (optional)
The app offers a Piscary Pro subscription, managed via RevenueCat on top of the App Store (Apple) or Google Play.
- RevenueCat processes purchase / subscription data and an identifier linked to your account (pseudonymous) to manage your entitlements and to restore your purchases.
- The payment itself is handled by Apple or Google depending on your platform: we never have access to your card details.
6. Usage measurement (anonymous statistics)
To learn which features are actually used, and where the app is hard to use, we measure its usage with PostHog, hosted in the European Union.
- What is sent: the screens opened, lifecycle events (installed, updated,
opened, backgrounded), and a closed list of actions — account created, catch
saved, spot created, trip started, species page opened, subscription screen
shown, plan selected, purchase or restore. Each event may carry counters and
short labels (for example
annual,saltwater, or your total number of catches). - What is NEVER sent: your spot names or their coordinates, your photos, your notes, your username, your email address, or any text you type. A technical filter rejects any value that looks like free text or an email address.
- No session replay, no capture of your gestures: we do not know where you tap on the screen.
- Link to your account: events are associated with your account identifier (the same pseudonym used for syncing), so that we can measure journeys rather than anonymous totals. They are therefore deleted along with your account.
- You can turn it off at any time: Profile → Settings → “Help improve the app”. It is on by default; once off, no event leaves your device.
7. What we do NOT do
- No personalized advertising and no cross-app tracking: the ads shown are strictly non-personalized and are not used to track you from one app to another.
- No third-party advertising analytics (no Google Analytics, Firebase Analytics, Facebook SDK, etc.) and no profiling: nothing we measure is used to target you or to make decisions about you.
- No recording of your screen or your gestures: we do not know where you tap, and the app never records a “session replay”. The usage measurement we do is limited to screens opened and a closed list of actions — see “Usage measurement” above.
- No selling of data, no data brokers.
- No marketing or promotional notifications: local notifications are scheduled on the device (ideal-fishing-window alert), and remote notifications, if you allow them, only ever report a real action another angler took towards you — a like, a comment, a follow (see “Data processed on our servers”).
Purposes of processing
| Data | Purpose | Legal basis (GDPR) |
|---|---|---|
| Journal, photos, gear (local) | Provide the fishing logbook | Service provision / legitimate interest |
| Spot location | Compute fishing conditions (weather, tides) | Consent (location permission) |
| Catch location | Locate your catches | Consent |
| Email + password | Create and secure your account | Contract performance (the account you request) |
| Synced profile, catches, photos | Sync and sharing you enable | Contract performance / consent |
| Photo submitted to “Identify a fish” | Identify the species from a photo (not kept) | Service provision |
| Visual signatures of your catches | Improve species recognition | Consent (dedicated setting, off by default) |
| Likes, comments, friendships | Social features you use | Consent |
| Device notification token | Tell you about a like, a comment or a new follower | Consent (notification permission) |
| Reports / blocks | Community safety and moderation | Legitimate interest |
| Non-personalized advertising (free users) | Fund the free version of the app | Legitimate interest; consent (UMP form) in the EEA / UK |
| Purchase / subscription data | Manage the Piscary Pro subscription and restore purchases | Contract performance |
| Crash / technical diagnostics (Sentry) | App stability and bug fixing | Legitimate interest |
| Email address (Resend) | Deliver the account confirmation email | Contract performance |
Third-party services
Piscary communicates with the following families of external services:
-
Open-Meteo (
open-meteo.com) — weather, marine and hydrology service. Receives only geographic coordinates of a point you look up, in order to return weather, tides and river flow. No account identifier and no direct personal data is transmitted to it. See Open-Meteo’s policy on their site. -
Apple (Apple Maps, on iOS) and Google (Google Maps, on Android) — map display and reverse geocoding. The map is rendered by the operating system’s mapping service: when you view a map, the device requests the cartography for the area you are viewing from Apple (iOS) or Google (Android). The same services turn coordinates into a place name. Piscary transmits no account identifier to them; what these services collect falls under their own policies (
apple.com/legal/privacy,policies.google.com/privacy). -
Supabase — database, authentication and file-storage host, used only if you have an account. Piscary’s Supabase project is hosted in the European Union (EU) region.
-
Google AdMob — advertising network, used only for free users, to serve non-personalized ads. May process device / advertising identifiers and technical information (see “Advertising”). See Google’s privacy policy (
policies.google.com/privacy). -
RevenueCat — management of the Piscary Pro subscription (entitlements, purchase restoration), on top of the App Store / Google Play. Processes purchase / subscription data and an identifier linked to your account (pseudonymous, see “Piscary Pro subscription”).
-
Sentry — crash and error reporting for app stability, active only in the released app. Receives technical diagnostics (crash stack traces, device model and OS version, app version, and in-app navigation breadcrumbs = screen names). Configured without personal data (no user IP, no user identifier) and hosted in the European Union (EU) region. Used to fix bugs, never for advertising or behavioral tracking.
-
Resend — transactional email delivery provider used to send the account confirmation email (through Supabase). Processes your email address for the sole purpose of delivering that email. See Resend’s policy (
resend.com). -
Public hydrology networks — to show a river’s flow and level (and its temperature where that measurement exists): Hub’Eau / Eaufrance (France), queried directly by the app — it therefore sees your connection’s IP address; U.S. Geological Survey (United States) and Environment Agency (England), queried by our servers. They receive coordinates or a gauging station identifier, never an account identifier.
-
PostHog — app usage measurement (see “Usage measurement”). Receives the screens opened, lifecycle events, a closed list of actions, and your account identifier (pseudonym). Hosted in the European Union (
eu.i.posthog.com). Receives none of the text you type, no coordinates, no photos. Can be turned off in Settings. Seeposthog.com/privacy. -
OVH (OVH SAS, server located in Gravelines, France) — hosts the image-analysis server for species recognition. Receives the photo you submit (or, if you consented to improvement, a catch photo) for the time needed to compute a visual signature, and keeps neither the photo nor the signature. No account identifier is sent to it.
-
Expo (
expo.dev) — remote notification delivery. Receives your device’s notification token and the notification text — which contains the other angler’s username and, for a comment, an excerpt of it — then relays them to Apple (APNs) or Google (FCM) notification services. Receives neither your email address, nor your photos, nor your coordinates. Seeexpo.dev/privacy.
Attribution — weather, marine and hydrology data is provided by Open-Meteo under the CC BY 4.0 license; place and waterway names come from OpenStreetMap (via Overture Maps) under the ODbL license. Both sources are credited within the app; the map on screen carries the Apple Maps (iOS) or Google Maps (Android) notice.
International transfers — Supabase, Sentry, PostHog and OVH process data in the European Union. Google (AdMob, Google Maps), Apple (Apple Maps), RevenueCat, Resend, Expo and the app stores (Apple / Google) may process data outside the EU (notably the United States); these providers rely on appropriate safeguards, such as the EU Standard Contractual Clauses.
Storage location and retention
- Local data: kept on your device until you delete it in the app or uninstall the app. Uninstalling clears the app’s local storage.
- Account data (Supabase): kept in the EU region for as long as your account exists. When you delete a catch in the app and sync, the deletion is propagated to the server.
- Inactive accounts: to respect storage limitation, an account with no sign-in for 36 months may be deleted (or anonymized) after a prior warning email.
- Photos and media: catch, gear and avatar photos are kept for as long as the catch, item or account they belong to exists. They are deleted along with an inactive or deleted account. Piscary may also delete orphaned files (whose catch has been erased) and, for media older than 5 years, reduce their resolution or delete them after notifying you in the app, without affecting the catches themselves.
- Account deletion: when you delete your account, erasure is immediate and permanent server-side (see “Your rights”).
Your rights
Under the GDPR, you have the rights of access, rectification, erasure, restriction, objection and portability of your data.
- Edit your data: your profile, catches and gear can be edited directly in the app.
- Delete your account: in the app, Profile → Settings → Danger zone →
Delete account. This triggers a server function (Supabase Edge Function
delete-account) that immediately and permanently erases your authentication account, profile, catches, photos, comments, likes, friendships and reports. You may also write to contact@piscary.app to exercise this right. Note: any Piscary Pro subscription is not cancelled by deleting your account; you must manage or cancel it directly through your store (App Store or Google Play). - Access / portability: write to contact@piscary.app; we will provide the account data concerning you.
- Complaint: you may lodge a complaint with the CNIL (the French supervisory authority) or the authority in your country of residence.
Transparency note: account deletion is immediate and permanent: it runs directly in the app (Profile → Settings → Danger zone → Delete account) via a server function, with no manual intervention or processing delay. Emailing contact@piscary.app remains an option if you prefer. Your local data (on the device) is erased as soon as you delete the relevant items or uninstall the app.
Children
Piscary is not directed at children under 15 and does not knowingly collect data about them. If you believe a child has provided us with personal data, contact contact@piscary.app for its removal.
Security
Exchanges with Supabase and Open-Meteo use HTTPS (encryption in transit). Access to account data is protected by Supabase Row Level Security: you can only access your own data and content shared with you. The authentication session is stored locally on the device.
Changes
This policy may be updated. The “Last updated” date at the top of this document indicates the version in force. For any question: contact@piscary.app.