ColorCollect Get the app
Legal

Privacy policy

Last updated: 2026-11-07. This document explains what data the ColorCollect app ("the app", "we") and this website collect, why, and how long it stays around.

Who is responsible

The controller under the EU General Data Protection Regulation (GDPR) for the app and this website is:

Liviusz Lovasz
Humperdinckstr. 7
80807 München
Germany
Email: lancimator@gmail.com

We are not required to appoint a data protection officer.

Summary

1. What we collect

1.1 Local storage (always)

The app stores the following on your device only:

Color assist camera — when you take a photo with Color assist (on by default; Settings → Capture), the app analyses the live camera view on your device to measure how close the color in the middle of the view is to your target color. The camera view is never stored or sent anywhere; only the photo you take is kept, like any other photo.

You can clear all of this with Settings → Delete account & all data, or by uninstalling the app.

1.2 Backend storage (only in Group mode)

When you create or join a Group montage, the following is sent to our backend (Supabase, hosted in the EU — Ireland):

1.3 Geotagging (opt-in)

If you enable "Save photo locations" in Settings, the app reads the GPS coordinates of each cell photo and stores them on your device. They are used to show your montages on an in-app map. By default these coordinates stay on your device only and are not included in Group-mode uploads. The map background is loaded from the OpenStreetMap tile servers (OpenStreetMap Foundation): to draw it, your device downloads the map squares for the area on screen, so that server sees your IP address and which area is shown — never the photos or their exact coordinates. Downloaded map squares are cached on your device (at most 64 MB) and deleted by Settings → Delete account & all data.

There is a separate, also-optional setting, "Share photo location with my group". If you turn it on, the location of photos you add in a Group room is uploaded alongside the photo so the other participants in that room can see where it was taken on their map. This applies only to Group mode — your solo montage locations are never uploaded. Coordinates shared this way are stored with the group photo and are removed when that photo is deleted from our backend (shortly after the room is finalized — typically within an hour — and at most 24 hours after a room goes inactive; see section 2).

You can turn either setting off at any time. Turning off sharing stops new uploads; existing coordinates on the device remain until you delete the photo or the app.

1.4 Crash reports (opt-in)

Crash reporting is off unless you agree to it. After you finish your first montage the app asks you once ("Help fix crashes?"), and you can turn it on or off at any time under Settings → Privacy → Send crash reports. If you agree, the app sends anonymous error reports to Sentry (sentry.io) when it crashes or freezes, and when an important action fails — sharing a montage, uploading a group photo, creating a montage, a purchase, or taking a photo. A report contains the error and its stack trace, the OS version, the device model, the app version, and the random anonymous account id. Before a report leaves your device the app strips file paths, internal ids, links and tokens, e-mail addresses and the device name; reports never contain your photos, montages, room codes, display names, location, or device identifiers like IMEI / advertising id. No performance traces, screenshots or tap logs are collected. Turning the setting off stops reporting immediately.

1.5 Notifications

If you create a group montage with a deadline, the app schedules a one-hour-before local reminder using the system notification service. Reminders are off until you turn them on (after your first finished montage, or under Settings → Reminders): a daily note naming the color of the day at the time you choose, an evening heads-up on days your streak would otherwise break, and a nudge a day after your last photo when a hunt is still unfinished. The color of the day is calculated on the device, so these need no server either. The system asks for notification permission the first time you turn any of them on; you can revoke it, or switch each reminder off, at any time. All reminders are scheduled and fired entirely on your device — nothing is sent to a push server.

1.6 Shared montage links (when you tap Share)

When you share a finished montage, the app uploads that one composed montage image (a JPEG reduced to at most 1080 pixels, typically under 150 KB) to our backend together with its target color and color name, and puts a link to it in your message (for example https://colorcollectapp.com/m/?id=…). Anyone you send the link to can open the montage in the app or see it on that web page. The upload starts as soon as you tap Share (so the link is ready when the share sheet opens) and the link is kept for re-sharing the same montage. The individual cell photos, their locations, and your display name are not uploaded. The link id is random and unguessable; links are not listed or searchable. The image and its record are deleted automatically 90 days after sharing. You can take one link down earlier with Stop sharing link on that montage (the link stops working at once and the image is deleted from our server, typically within an hour; a copy someone's browser or a web cache already holds may stay visible for up to an hour), or all of them with Settings → Delete account & all data. If you are offline, the montage is shared as an image without a link and nothing is uploaded.

1.7 Usage statistics (pseudonymous)

To understand how the app is used, it records a small number of events on our own backend (Supabase, EU), keyed only by your random anonymous account id. That id names no person, but it links your events to each other, so these statistics are pseudonymous rather than anonymous: a montage was completed or shared, a group room was created or joined, the premium screen was opened (and from where), the outcome of an in-app purchase attempt (which product, and whether it succeeded or was cancelled — never payment details), the price the premium screen showed and the country of your store account as reported by Google Play or the App Store, that the store could not load a price, that the promo-code screen was opened (never the code itself), whether a premium purchase could be confirmed with the store, plus similar steps such as first launch, finishing the intro, starting a hunt (e.g. from the color of the day), taking a photo (for a Color assist photo, also how close its color was: great, close or far), picking a target color from a photo or the camera, opening the app from a reminder and changing the reminder settings (which reminders are on and at what time), sharing an invite, opening a shared link, and the type of error when a photo, upload or montage fails. Each event also records the device platform (Android or iOS), the app version and the device language/region setting, and the time it happened. On a store test device (Google Play's automated pre-launch testing, or a TestFlight / App Review build) events are additionally marked as such, so they can be left out of the statistics. Events logged while offline are kept on the device (at most two weeks) and sent when the connection returns. Events carry no photos, display names, locations or free text. You can turn usage statistics off at any time in Settings → Privacy → Send usage statistics: the app then drops any events it has not sent yet and sends no more until you switch it back on. They are not shared with anyone and no third-party analytics SDK is used. Individual events are deleted after 180 days, or earlier when you use Settings → Delete account & all data. Before an old month's events are deleted, they are added up into monthly totals per event and platform (for example "montages shared on Android in August: 120, by 80 people") that contain no account id, so they cannot be traced back to you and are kept for long-term trends.

1.8 Bot protection (Cloudflare Turnstile)

To stop automated scripts from creating large numbers of fake accounts and overwhelming the service, the app may run a Cloudflare Turnstile check when it first creates your anonymous account on our backend (for example when you create or join a Group room, share a montage link, or the app sends its usage statistics). The check runs invisibly in a hidden web view inside the app — nothing is shown on screen and you don't have to do anything.

For this check, Cloudflare, Inc. receives technical signals from your device, such as your IP address, the web view's browser (User-Agent) details and connection characteristics, and uses them to tell people apart from bots and to improve its bot detection. The check only returns a one-time token, which our backend verifies; we do not receive or store the signals themselves, and no photos, display names, locations, montages or account ids are sent to Cloudflare. Turnstile is not used for advertising or to track you across apps or websites.

Cloudflare's processing is described in the Turnstile Privacy Addendum (https://www.cloudflare.com/turnstile-privacy-policy/) and Cloudflare's privacy policy (https://www.cloudflare.com/privacypolicy/).

1.9 Invite links opened before the app is installed

If you follow a group invite or a shared-montage link before you have the app, the web page passes that link on so the app can open it once installed. On Android it is attached to the Google Play download as the install referrer, which the app reads once, on its first launch. On iPhone, tapping the download button copies the link to your clipboard; the app reads the clipboard only when you tap "Got an invite or link? Paste it" (or the paste button on the Join screen). The link is used only on your device to open that room or montage — joining then works exactly as in section 1.2, and if the invite carries the inviter's anonymous account id, the room records that you joined through their invite. Apart from that, the clipboard contents are not stored or sent anywhere. From the install referrer the app additionally keeps only its campaign tags — the utm_source, utm_medium and utm_campaign values Google Play attaches (for example google-play / organic, or the name of an ad campaign) — and logs them once as a usage statistic (section 1.7) so we can see which channels bring people to the app; nothing else from the referrer is stored or sent.

1.10 Invite rewards

When a friend joins a group room through your invite link and then adds a photo there (or, in an "everyone their own color" room, submits their montage), our server records one invite credit: your anonymous account id, your friend's anonymous account id, the room and the time. Three credits unlock the Prism frame on your device. Each friend can be credited to only one person, and the app can only read your own count ("2/3 friends joined") — never who the friends are. Credits are kept until you use Settings → Delete account & all data, which deletes the credits you earned and removes your id from any credit you gave a friend. The cached count and the unlock are also saved on your device.

1.11 Rematch invites

When someone in a finished group room taps Play again with this group, our server creates the new room and records one invite for each other member of the old room: the new room, the invited member's anonymous account id, the inviter's anonymous account id, the old room and the time. Invited members see the invite on the app's home screen and in My rooms (and, if the old room is still open in the background, as a local notification); nobody outside the old room is invited. An invite disappears when you join or dismiss it, stops showing after 7 days, and is deleted together with the new room (see section 2) or when you use Settings → Delete account & all data.

1.12 Reports and blocks

To keep group rooms safe, you can report a photo, comment, player or shared montage, and block a player (see the Terms of Service).

2. How long we keep things

Data Retention
Local data on your device Until you delete the app, or use Settings → Delete account & all data.
Group-room photos Auto-deleted from our servers shortly after the room is finalized (typically within an hour), and at most 24 hours after a room goes inactive.
Unfinished group rooms Deleted, with their photos, after 24 hours with no activity (no photo, vote, comment or member change), but never before a deadline the host set.
Finished group rooms Photos and their locations and notes are deleted shortly after the room ends (typically within an hour); the room itself (names, votes, comments, no photos) is kept 7 days so members can see the result and start a rematch, then deleted.
Hashed IP addresses (section 1.2) Unknown-code attempts: at most 2 days. Room removals: until that room is deleted.
Per-day abuse-prevention counters 30 days, then deleted.
Anonymous account on our server Deleted with all its server-side data after 90 days without use, if it holds no purchase record, room membership or live share link (section 1.2). Otherwise until Delete account & all data.
Shared montage links (image + record) 90 days after sharing, or when you tap Stop sharing link, then deleted.
Reports (section 1.12) Until resolved, then 180 days. A report you filed loses your account id when you delete your account.
Blocks (section 1.12) Until you unblock, or either account is deleted.
Invite credits (section 1.10) Until Delete account & all data (yours are deleted; your id is removed from credits you gave).
Usage statistics 180 days, or until you use Settings → Delete account & all data (or request deletion by email) if that comes first. Afterwards only monthly totals without any account id remain (section 1.7).
Crash reports (if you opt in) 90 days at Sentry, then deleted.
Bot-protection signals (section 1.8) Not stored by us. Cloudflare handles them under its Turnstile Privacy Addendum.

3. Who can see your data

We use these service providers, each bound by a data processing agreement (or, for Google Play and the App Store, acting under their own terms as payment platforms):

4. International transfers

Our backend is hosted on Supabase in the EU (Ireland). If you're outside the EU, your data is transferred to and stored in the EU. The bot-protection check (section 1.8) is processed by Cloudflare, Inc. on its global network, so those technical signals may be processed outside the EU, including in the United States. The same applies to opt-in crash reports (Sentry), this website's hosting (GitHub) and page statistics (Cloudflare), and Google Analytics if you accept it. Transfers to the United States rely on the EU-U.S. Data Privacy Framework adequacy decision (Art. 45 GDPR) where the provider is certified, and otherwise on the European Commission's Standard Contractual Clauses (Art. 46(2)(c) GDPR).

5. Your rights

You can:

Under the GDPR you also have the right to access the data we hold about you (Art. 15), to have it corrected (Art. 16) or erased (Art. 17), to restrict its processing (Art. 18), to receive it in a portable format (data portability, Art. 20), and to withdraw any consent at any time without affecting processing done before (Art. 7(3)).

Right to object (Art. 21 GDPR): where we rely on legitimate interests (section 5.1), you can object at any time on grounds relating to your particular situation, and we will stop unless we have compelling legitimate grounds. For usage statistics you can simply switch them off in Settings.

Because the app does not ask who you are, please include the anonymous account id from Settings → Privacy → Account ID with any request so we can find your data. We answer within one month.

You also have the right to lodge a complaint with a data protection supervisory authority, in particular in the EU country where you live or work. The authority responsible for us is the Bavarian State Office for Data Protection Supervision (Bayerisches Landesamt für Datenschutzaufsicht, https://www.lda.bayern.de), Promenade 18, 91522 Ansbach, Germany.

5.1 Why we may process your data (legal bases)

6. Cookies & trackers

6.1 In the app

The app does not use advertising identifiers or third-party trackers. The only third-party code that runs is the invisible Cloudflare Turnstile bot check described in section 1.8, which Cloudflare may support with its own strictly necessary cookies inside that hidden web view; it is used only to tell people apart from bots, never for advertising or tracking. We do not integrate Facebook SDK, Google Ads, or similar.

6.2 On this website

Hosting. This website is hosted on GitHub Pages (GitHub, Inc.). When you open a page, GitHub's servers process your IP address, the page requested, the time, and your browser's User-Agent to deliver the page and to protect the service; GitHub keeps these server logs under its own policies. Legal basis: our legitimate interest in delivering a secure website (Art. 6(1)(f) GDPR).

Cookieless page statistics. We use Cloudflare Web Analytics to count page views, referrers and load times. It sets no cookies, does not use local storage or fingerprinting, and does not track you across sites or visits; Cloudflare receives your IP address and browser details with each page view and reports only aggregated numbers to us. Legal basis: our legitimate interest in knowing which pages are used (Art. 6(1)(f) GDPR). See Cloudflare's privacy policy.

Google Analytics (only with your consent). If you press Accept on the cookie banner, this website loads Google Analytics (GA4) to understand aggregate traffic — for example how many people visit, which pages they view, and roughly where visitors come from. Google Analytics sets cookies (named _ga and _ga_*, kept for up to 2 years) to do this. Until you accept, the Google Analytics script is not loaded at all, so nothing is sent to Google. If you press Decline (or ignore the banner), it stays off. Legal basis: your consent (Art. 6(1)(a) GDPR, § 25(1) TDDDG).

Your choice is remembered in your browser's local storage (key cc_consent) so we don't ask again. You can change it at any time with the Cookie settings link at the bottom of every page; declining after accepting stops Google Analytics and deletes its cookies.

We use analytics only in aggregate. We do not use it for advertising, ad personalization, or to build a profile of you — ad_storage, ad_user_data, and ad_personalization stay denied even after you accept. Google processes this data as described in Google's privacy policy. The website does not integrate Facebook SDK, Google Ads, or similar.

7. In-app purchases

ColorCollect offers optional in-app purchases: a one-time premium unlock and a set of optional donations (a "tip jar"). There are no subscriptions, and purchasing is never required — all core features are available for free.

All in-app purchases are processed entirely by the platform's own payment system — Google Play Billing on Android and the App Store on iOS. We never receive, see, or store your payment card or billing details; the store handles the transaction and only tells the app whether a purchase succeeded.

When you buy the premium unlock, the app records that purchase in a flag stored locally on your device so it can remember your entitlement. Because Premium also lets you make a group room Premium for everyone in it (the "Host Pass"), the app sends the store's purchase reference for the premium unlock — the Google Play purchase token or the App Store transaction id, never payment details — to our backend (Supabase, EU). The backend asks Google Play or the App Store to confirm the purchase and then stores the product, the purchase reference, the store environment (e.g. test or production) and the time of the check, keyed by your random anonymous account id. It is re-checked periodically, so a refunded or revoked purchase stops unlocking Premium rooms. Whether a room is Premium is stored with the room and deleted with it. The purchase record is deleted when you use Settings → Delete account & all data (restoring your purchases later checks it again). Separately, the outcome of each purchase attempt (product, price shown and result, no payment details) and whether a premium purchase could be confirmed are recorded in the usage statistics described in section 1.7. Donations are consumable and unlock nothing — they are simply a way to support development.

For your purchase history, refunds, and the data the store itself collects to process payments, see Apple's and Google's respective privacy policies.

8. Children

The app is rated for ages 12 and up. Group rooms and share links are not based on consent, but if you are under 16 you should use them only with a parent or guardian's permission (Terms of Service § 2). We do not knowingly collect data from children under 13. If you believe a child has used the app, email us and we will delete the relevant account.

9. Changes to this policy

Material changes will be announced in the app's release notes and reflected in the "Last updated" date at the top of this document.

10. Contact

Questions, complaints, or deletion requests: lancimator@gmail.com