PIANO LUX
Política de Privacidade Privacy Policy
Aplicativo móvel — jogo de ritmo musical Mobile application — music rhythm game
VIGÊNCIA: 2026-08-22 EFFECTIVE DATE: 2026-08-22
1. Sobre o aplicativo
Piano Lux é um jogo de ritmo musical para dispositivos móveis. Você toca e segura notas que caem em sincronia com músicas. O jogo exibe anúncios para jogadores que não assinam, servidos pela mediação AppLovin MAX e suas redes parceiras (veja a Seção 6); assinantes não veem anúncios. Fora dos anúncios, não usamos um SDK de analytics de produto de terceiros rastreando você entre apps. O jogo inclui um placar global opcional: qualquer pessoa pode jogar sem criar conta, mas aparecer no ranking exige login com Google ou Apple (veja Seção 3). Registramos um pequeno conjunto de eventos anônimos de gameplay (qual música você jogou, se completou, quão longe chegou se não terminou) para decidir quais músicas produzir em seguida; a lista completa está na Seção 3. Este documento explica exatamente quais dados o jogo coleta, para onde vão, e o que deliberadamente não coletamos.
2. Vigência
Esta política tem vigência a partir de 2026-07-19. Atualizamos a data de vigência sempre que mudamos o que coletamos — não para correções de digitação. Quando a data muda, também atualizamos o versionName do app para que a mudança esteja visível no momento da instalação.
Histórico de mudanças:
- 2026-08-22 — O app passou a se chamar Piano Lux (mesmo aplicativo, mesmo pacote). Adicionados anúncios via mediação AppLovin MAX (redes parceiras Google AdMob, Meta Audience Network, Unity Ads), com consentimento via Google UMP. Novos dados divulgados como coletados e compartilhados com as redes de anúncios: identificador de publicidade (Advertising ID / GAID), endereço IP, informações do dispositivo, interações com anúncios e diagnósticos, para publicidade, análise e prevenção a fraude. Adicionada a Seção 6 (Anúncios e recompensas) e o registro de recompensa por anúncio assistido. Assinantes não veem anúncios.
- 2026-07-19 — Corrigida a informação sobre relatórios de crash: eles são vinculados ao ID pseudônimo de instalação/anônimo (via
setUser+ tagauth_uid), não a uma identidade real. Público-alvo definido como 13+. A permissão de microfone passou a ser removida do app no build. (Naquela versão o app não exibia anúncios; superado em 2026-08-22.) - 2026-06-29 — Adicionados login opcional via Google/Apple e placar global. Novos dados divulgados: e-mail e nome de exibição do provedor (coletados apenas se o usuário optar pelo login), apelido público, código de país opcional e pontuações do ranking (score, accuracy, max combo). Corrigida a seção "O que NÃO coletamos" para refletir que e-mail e nome de exibição são coletados quando o usuário faz login voluntariamente. Adicionada Apple como subprocessadora de autenticação; Google agora também atua como provedor de login. Adicionada nuance sobre leitura da configuração de região do dispositivo para pré-preenchimento de bandeira no placar.
- 2026-05-04 — Adicionados eventos anônimos de gameplay (id da música, dificuldade, score, drop-off de progresso) e eventos de funil de paywall (qual tela acionou o paywall e o resultado). Ambos vinculados apenas ao ID anônimo do Supabase. Nenhum SDK de analytics de terceiros foi adicionado.
- 2026-04-19 — Política inicial.
3. O que coletamos e por quê
A tabela abaixo lista cada dado que o Piano Lux acessa. Foi auditada contra o código-fonte em 2026-08-22.
| Tipo | Onde | Por quê | Para onde vai | Identificado? |
|---|---|---|---|---|
| ID anônimo do Supabase | Início do app, automático | Manter estado de assinatura entre reinstalações | Supabase Auth | Anônimo — sem e-mail/PII |
| E-mail e nome de exibição do provedor (Google ou Apple) | Ao fazer login com Google ou Apple — opcional; não é coletado para quem joga anonimamente | Criar conta recuperável que preserve compras e progresso entre reinstalações e troca de aparelho | Supabase Auth (identidade vinculada ao ID anônimo existente). Apple pode fornecer e-mail relay privado; nome retornado apenas no primeiro login. | Vinculado ao usuário identificado — somente quando o usuário opta pelo login |
| Apelido (nickname) | Ao configurar perfil do placar pela primeira vez — exige login | Exibição no placar global para outros jogadores | Tabela user_profiles no Supabase | PÚBLICO — visível para todos os jogadores no placar global. Definido uma vez; não pode ser alterado. |
| Código de país (ISO 3166-1 alpha-2) | Ao configurar perfil do placar (opcional) — pré-preenchido pela configuração de região do dispositivo ou escolhido manualmente | Exibir bandeira no placar global | Tabela user_profiles no Supabase | PÚBLICO — visível como bandeira no placar. Pode ser omitido. |
| Pontuação no placar (score, accuracy, max combo, por música + dificuldade) | Ao finalizar uma música estando logado | Classificação competitiva global | Tabela leaderboard_entries no Supabase | PÚBLICO — visível para todos os jogadores no placar global |
| ID de assinante RevenueCat | Primeira visualização do paywall | Identificar cliente para restauração de compra | Backend RevenueCat (vinculado ao token de compra Google Play) | Pseudônimo — só conta Play |
| Tokens de compra (Weekly / Monthly / Lifetime) | No momento da compra | Validar direito de uso | Google Play Billing → RevenueCat → linha entitlements no Supabase | Vinculado à conta Google Play, não armazenado como PII |
| Dados de crash + diagnóstico (stack trace, modelo do device, versão do OS, versão do app; replay de sessão totalmente mascarado apenas em erro) | Em exceção não tratada; amostragem de performance | Diagnosticar falhas em produção | Projeto Sentry piano-hero | Vinculado ao ID pseudônimo de instalação/anônimo (via setUser + tag auth_uid) — não a identidade real |
| Offset de calibração de áudio (inteiro em ms) | Após calibração de 8 toques | Preservar offset entre reinícios | AsyncStorage (apenas no dispositivo) | Local apenas, nunca transmitido |
| Lista de músicas pinadas | Após pinar música | Preservar pin entre reinstalações | Linha pinned_songs no Supabase, chaveada pelo ID anônimo | Vinculado ao ID anônimo do Supabase |
| JSON do chart + áudio (músicas baixadas) | Ao selecionar música remota | Cache para jogar offline | documentDirectory local | Local apenas |
| Eventos de sessão de jogo (id da música, dificuldade, score, accuracy, max combo, contagem de pausas, completou vs. abandonou, progresso até onde chegou, duração total do chart, tema ativo, ID estável de instalação) | Ao iniciar e finalizar (ou abandonar) uma música | Decidir quais músicas manter, quais merecem v2, e quais dificuldades estão duras demais | Linha play_sessions no Supabase, chaveada pelo ID anônimo | Vinculado ao ID anônimo do Supabase. O ID de instalação é um UUID gerado na primeira abertura, não vinculado a hardware do aparelho. |
| Eventos do app (paywall exibido/fechado/comprado/restaurado/erro; música pré-escutada; música baixada; pacote visualizado/pinado; dificuldade alterada; tema alterado; com contexto da tela) | Quando as ações acima ocorrem | Entender quais telas convertem, quais conteúdos são consumidos e como o app é usado | Linha app_events no Supabase, chaveada pelo ID anônimo | Vinculado ao ID anônimo do Supabase |
| Identificador de publicidade (Advertising ID / GAID) | Ao carregar/exibir um anúncio para jogador não assinante, após consentimento | Publicidade (inclusive personalizada, com consentimento), medição e prevenção a fraude | AppLovin MAX e redes parceiras (Google AdMob, Meta Audience Network, Unity Ads) | COMPARTILHADO com as redes de anúncios (terceiros). Pode ser limitado nas configurações do dispositivo. |
| Endereço IP e informações do dispositivo (modelo, versão do OS, sinais do SDK de anúncios) | Na requisição de anúncio | Entregar anúncios, estimar região aproximada e prevenir fraude | AppLovin MAX e redes parceiras | COMPARTILHADO com as redes de anúncios. Não usamos o IP para localização precisa e não o armazenamos. |
| Interações com anúncios (impressões, cliques) e diagnósticos de anúncio | Ao ver ou interagir com um anúncio | Medição, otimização e prevenção a fraude | AppLovin MAX e redes parceiras; nosso funil ad_shown/ad_failed fica no Supabase | COMPARTILHADO com as redes de anúncios (os eventos de funil no Supabase não são compartilhados) |
| Registro de recompensa por anúncio (ID de impressão do anúncio recompensado + ID de usuário do app) | Ao concluir um anúncio recompensado para ganhar um ingresso | Creditar a recompensa (ingresso) e evitar crédito duplicado/fraude | Callback servidor-a-servidor da AppLovin para o nosso backend Supabase | Vinculado ao ID de usuário do app; guardamos esse registro |
Em linguagem comum: geramos um ID anônimo para que sua atividade sobreviva a uma reinstalação; se você optar pelo login, vinculamos uma conta Google ou Apple ao mesmo ID; usamos Google Play e RevenueCat para processar o pagamento; coletamos relatórios de crash para corrigir bugs; registramos quais músicas você joga (e quão longe chega) para escolher o que produzir em seguida; e guardamos sua calibração no aparelho. Se você não é assinante, exibimos anúncios pela AppLovin MAX, e as redes de anúncios recebem seu identificador de publicidade e sinais do dispositivo (veja a Seção 6). Fora dos anúncios, os eventos de gameplay ficam dentro do nosso projeto Supabase e não usamos um SDK de analytics de produto de terceiros.
4. Para onde os dados vão (subprocessadores)
Piano Lux usa um pequeno número de serviços terceirizados. Cada um tem sua própria política de privacidade:
- Supabase — banco de dados + autenticação (anônima e vinculada ao Google/Apple). supabase.com/privacy
- Apple (Sign in with Apple) — autenticação opcional via Apple ID (apenas iOS). O e-mail e o nome de exibição fornecidos pela Apple são processados por ela antes de chegarem ao Supabase. apple.com/legal/privacy
- Google — processa transações via Google Play Billing e, opcionalmente, serve como provedor de login (Sign in with Google) em iOS e Android. Nunca vemos os dados do seu cartão. policies.google.com/privacy
- RevenueCat — processamento de compra e estado de assinatura. revenuecat.com/privacy
- Sentry — relatório de crashes e diagnóstico de performance. sentry.io/privacy
- AppLovin — mediação de anúncios (AppLovin MAX) e fluxo de consentimento. applovin.com/privacy
- Google (AdMob) — rede de anúncios parceira via mediação. policies.google.com/technologies/ads
- Meta (Audience Network) — rede de anúncios parceira via mediação. facebook.com/privacy/policy
- Unity Ads — rede de anúncios parceira via mediação. unity.com/legal/privacy-policy
As redes de anúncios acima (AppLovin, Google, Meta, Unity) recebem dados como terceiros quando exibimos anúncios; os detalhes estão na Seção 6. Fora desses casos de publicidade, não compartilhamos dados com ninguém fora dessa lista. Não vendemos dados para ninguém, em hipótese alguma.
5. O que NÃO coletamos
Para ficar inequívoco, os itens abaixo nunca são coletados pelo Piano Lux:
- Seu número de telefone — nunca coletado.
- Seu nome real ou endereço de e-mail quando você joga anonimamente — sem formulário de cadastro obrigatório, sem PII exigido. O login com Google ou Apple é opcional e necessário apenas para entrar no placar global ou realizar compras; se você optar por fazer login, recebemos e-mail e nome de exibição do provedor (a Apple pode fornecer um e-mail relay privado se você escolher "Ocultar E-mail"). Esses dados ficam no Supabase Auth. Fotos de perfil do provedor não são coletadas nem usadas.
- Sua localização precisa — sem GPS, sem geolocalização por IP. Para o placar global, lemos a configuração de região/idioma do seu dispositivo para pré-preencher o campo de país ao criar o perfil; você pode alterar ou omitir o país manualmente, e nunca acessamos o GPS nem inferimos localização por endereço IP.
- Áudio do microfone. O app toca música mas nunca grava; a permissão de microfone é removida do app no momento do build.
- Fotos, contatos, calendário ou arquivos do seu dispositivo.
- SDKs de analytics de produto de terceiros (Mixpanel, Amplitude, PostHog, Segment, Firebase Analytics, etc.). Os eventos de sessão descritos na Seção 3 ficam dentro do nosso próprio Supabase e nunca são encaminhados para uma quarta parte. As redes de anúncios da Seção 6 são a única exceção e recebem apenas os sinais relacionados a anúncios ali descritos.
- Gravação de tela não mascarada. Registramos eventos discretos (iniciou, terminou, abandonou em X%); o replay de sessão do Sentry só ocorre em erro e é totalmente mascarado (sem texto, imagens ou vetores legíveis), nunca um vídeo legível da sua tela.
- IDs persistentes de hardware do dispositivo. O ID de instalação referenciado na Seção 3 é um UUID gerado por software no primeiro lançamento e armazenado localmente — não está vinculado ao IMEI, IDFA, Android ID ou qualquer identificador de hardware; é resetado ao desinstalar o app.
6. Anúncios e recompensas
Para jogadores que não assinam, o Piano Lux exibe anúncios (por exemplo, um anúncio intersticial ao sair da tela de resultado e um anúncio recompensado opcional). Assinantes não veem anúncios.
Os anúncios são servidos pela mediação AppLovin MAX, que agrega redes de anúncios parceiras: Google AdMob, Meta Audience Network e Unity Ads. Quando um anúncio é carregado, essas redes atuam como terceiros e podem receber seu identificador de publicidade (Advertising ID / GAID), seu endereço IP, informações do dispositivo e suas interações com o anúncio. Elas usam esses dados para publicidade (inclusive personalizada, quando há consentimento), medição/análise e prevenção a fraude. Não usamos o IP para localização precisa e não o armazenamos.
Consentimento. Na primeira exibição, o AppLovin conduz o fluxo de consentimento do Google (Google UMP / GDPR/TCF), apresentando os Termos e a Política de Privacidade da AppLovin. Onde aplicável, você pode recusar anúncios personalizados e continuar vendo anúncios não personalizados. Você também pode limitar o rastreamento de anúncios nas configurações do seu dispositivo (Android: "Excluir personalização com base em anúncios" / redefinir o Advertising ID).
Políticas das redes parceiras:
- AppLovin — applovin.com/privacy
- Google — policies.google.com/technologies/ads
- Meta — facebook.com/privacy/policy
- Unity — unity.com/legal/privacy-policy
Anúncios com recompensa. Assistir a um anúncio recompensado até o fim pode conceder um ingresso no jogo. Para creditar a recompensa de forma segura, o servidor da AppLovin notifica o nosso backend (Supabase) com um identificador de impressão do anúncio e o ID de usuário do app. Guardamos esse registro para creditar a recompensa e evitar crédito duplicado ou fraude. As regras de uso dos ingressos estão nos Termos de Uso.
7. Crianças
Piano Lux é destinado a usuários com 13 anos ou mais. Não é direcionado a crianças menores de 13 anos e não coletamos intencionalmente informação pessoal de crianças menores de 13. Não inicializamos o SDK de anúncios para usuários que o app identifique como menores de 13 anos. Se um perfil de placar for criado (apelido + país opcional), esses dados ficam visíveis publicamente para todos os jogadores, e o login com Google ou Apple é exigido para isso; por isso recomendamos supervisão de um responsável para menores. Se você acredita que uma criança menor de 13 anos usou o app, contate-nos (Seção 11) e apagaremos os dados associados.
8. Retenção de dados
IDs anônimos, direitos de uso e dados do placar ficam no Supabase indefinidamente para que compras e conquistas sobrevivam a reinstalações. Desinstalar o app interrompe a coleta de novos dados, mas os registros permanecem até que você nos solicite remoção (veja Seção 9).
Para usuários com login (conta Google ou Apple vinculada): o e-mail e o nome de exibição do provedor são mantidos como parte da identidade do Supabase Auth enquanto a conta existir. Apelido, código de país e pontuações do placar seguem a mesma retenção indefinida. Você pode solicitar a exclusão completa enviando e-mail com seu endereço cadastrado (veja Seção 9).
Relatórios de crash no Sentry seguem a retenção padrão do Sentry (90 dias). Registros de recompensa por anúncio são mantidos enquanto necessários para creditar a recompensa e prevenir fraude. Os dados que as redes de anúncios recebem seguem as políticas de retenção próprias de cada rede (veja a Seção 6). Offset de calibração e dados de chart baixados ficam apenas no seu aparelho e são removidos quando você desinstala o app.
9. Seus direitos
Você pode solicitar uma cópia de qualquer dado vinculado ao seu ID, ou pedir que apaguemos esses dados, enviando e-mail para o endereço na Seção 11. Honramos solicitações verificadas em até 30 dias.
- Usuários com login (Google ou Apple vinculado): inclua o endereço de e-mail cadastrado na conta para que possamos localizar e excluir a conta corretamente.
- Usuários anônimos: inclua a data e hora aproximada da sua última sessão de jogo e seu país para que possamos localizar o registro correto.
10. Mudanças nesta política
Se mudarmos materialmente o que coletamos ou para onde os dados vão, vamos atualizar a data de vigência no topo deste documento e bumpar o versionName do app para que a mudança esteja visível na instalação. Este documento é versionado em controle de fonte, então o histórico completo é auditável.
11. Contato
Para dúvidas de privacidade, exportação de dados ou solicitações de exclusão, contate:
E-mail: carlosga@demerzelstudio.com
Somos uma equipe pequena de desenvolvimento. Por favor, permita até 30 dias para resposta.
1. What this app is
Piano Lux is a mobile rhythm game. You tap and hold falling notes in time with music. The game shows ads to players who are not subscribers, served by AppLovin MAX mediation and its partner networks (see Section 6); subscribers see no ads. Apart from ads, we do not use a third-party product-analytics SDK following you between apps. The game includes an optional global leaderboard: anyone can play without an account, but appearing on the ranking requires signing in with Google or Apple (see Section 3). We do record a small set of anonymous gameplay events (which song you played, whether you finished it, how far you got if you didn't) so we can decide which songs to make next; see Section 3 for the full list. This document explains exactly what data the game collects, where it goes, and what we deliberately do not collect.
2. Effective date
This policy is effective 2026-07-19. We update the effective date whenever the substance of what we collect changes — not for typo fixes. When the effective date changes, we also bump the app's versionName so it is visible at install time.
Change history:
- 2026-08-22 — The app is now called Piano Lux (same application, same package). Added ads via AppLovin MAX mediation (partner networks Google AdMob, Meta Audience Network, Unity Ads), with consent handled through Google UMP. Newly disclosed as collected and shared with the ad networks: advertising identifier (Advertising ID / GAID), IP address, device information, ad interactions, and diagnostics, for advertising, analytics, and fraud prevention. Added Section 6 (Ads and rewards) and the rewarded-ad grant record. Subscribers see no ads.
- 2026-07-19 — Corrected the crash-report disclosure: reports are linked to the pseudonymous install/anonymous ID (via
setUser+ anauth_uidtag), not to a real identity. Target audience set to 13+. The microphone permission is now stripped from the app at build time. (That version showed no ads; superseded on 2026-08-22.) - 2026-06-29 — Added optional Google/Apple login and global leaderboard. New data disclosed: provider email and display name (collected only when the user chooses to sign in), public nickname, optional country code, and ranking scores (score, accuracy, max combo). Corrected "What we DON'T collect" to reflect that email and display name are collected when a user voluntarily signs in. Added Apple as an authentication sub-processor; Google now also serves as a login provider. Added nuance about reading device region setting for leaderboard flag prefill.
- 2026-05-04 — Added anonymous gameplay events (song id, difficulty, score, drop-off progress) and paywall funnel events (which surface triggered the paywall and the outcome). Both are linked only to the anonymous Supabase user ID. No third-party analytics SDK was added.
- 2026-04-19 — Initial policy.
3. What we collect and why
The table below lists every piece of data Piano Lux touches. It was audited against the source code on 2026-08-22.
| Type | Where | Purpose | Where it goes | Linked to identity? |
|---|---|---|---|---|
| Anonymous Supabase user ID | App startup, automatic | Track entitlement state across reinstalls | Supabase Auth | Anonymous — no email/PII |
| Provider email and display name (Google or Apple) | When you sign in with Google or Apple — optional; not collected for anonymous players | Create a recoverable account that preserves purchases and progress across reinstalls and device changes | Supabase Auth (identity linked to the existing anonymous ID). Apple may supply a private-relay email; display name is returned only on first sign-in. | Linked to identified user — only when the user chooses to sign in |
| Nickname | When you first set up your leaderboard profile — requires sign-in | Display on the global ranking for other players to see | Supabase user_profiles table | PUBLIC — visible to all players on the global leaderboard. Set once; cannot be changed. |
| Country code (ISO 3166-1 alpha-2) | When you set up your leaderboard profile (optional) — pre-filled from device region setting or chosen manually | Display a flag on the global leaderboard | Supabase user_profiles table | PUBLIC — visible as a flag on the leaderboard. Can be omitted. |
| Leaderboard score (score, accuracy, max combo, per song + difficulty) | When you finish a song while signed in | Global competitive ranking | Supabase leaderboard_entries table | PUBLIC — visible to all players on the global leaderboard |
| RevenueCat subscriber ID | First paywall view | Identify customer for purchase restoration | RevenueCat backend (linked to Google Play purchase token) | Pseudonymous — Play account only |
| Purchase tokens (Weekly / Monthly / Lifetime) | At purchase | Validate entitlement | Google Play Billing → RevenueCat → Supabase entitlements row | Linked to Google Play account, not stored as PII |
| Crash + diagnostics data (stack trace, device model, OS version, app version; fully-masked on-error session replay) | On uncaught exception; sampled performance | Diagnose crashes in production | Sentry piano-hero project | Linked to the pseudonymous install/anonymous ID (via setUser + an auth_uid tag) — not to real identity |
| Calibration audio offset (integer ms) | After 8-tap calibration | Persist offset across app restarts | AsyncStorage (device only) | Local only, never transmitted |
| Pinned songs list | After song pin | Persist pin grant across reinstalls | Supabase pinned_songs row keyed by anonymous user ID | Linked to anonymous Supabase user ID |
| Chart JSON + audio (downloaded songs) | When user selects a remote song | Cache for offline play | Local documentDirectory | Local only |
| Play session events (song id, difficulty, score, accuracy, max combo, pause count, completed vs. abandoned, how far you got, chart full duration, active theme, stable install ID) | When you start and finish (or quit) a song | Decide which songs to keep, which to make a v2 of, and which difficulties are too hard | Supabase play_sessions row keyed by anonymous user ID | Linked to anonymous Supabase user ID. The install ID is a software-generated UUID, not linked to device hardware. |
| App events (paywall shown/dismissed/purchased/restored/errored; song previewed; song downloaded; pack viewed/pinned; difficulty changed; theme changed; with screen context) | When the above actions occur | Understand which screens convert, which content is consumed, and how the app is used | Supabase app_events row keyed by anonymous user ID | Linked to anonymous Supabase user ID |
| Advertising identifier (Advertising ID / GAID) | When loading/showing an ad to a non-subscriber, after consent | Advertising (including personalized, with consent), measurement, and fraud prevention | AppLovin MAX and partner networks (Google AdMob, Meta Audience Network, Unity Ads) | SHARED with the ad networks (third parties). Can be limited in device settings. |
| IP address and device information (model, OS version, ad-SDK signals) | On the ad request | Serve ads, estimate coarse region, and prevent fraud | AppLovin MAX and partner networks | SHARED with the ad networks. We do not use the IP for precise location and do not store it. |
| Ad interactions (impressions, clicks) and ad diagnostics | When you see or interact with an ad | Measurement, optimization, and fraud prevention | AppLovin MAX and partner networks; our ad_shown/ad_failed funnel stays in Supabase | SHARED with the ad networks (the Supabase funnel events are not shared) |
| Rewarded-ad grant record (rewarded ad impression ID + app user ID) | When you complete a rewarded ad to earn a ticket | Credit the reward (a ticket) and prevent duplicate credit/fraud | AppLovin server-to-server callback to our Supabase backend | Linked to the app user ID; we keep this record |
Plain-English summary: we generate an anonymous ID so your activity survives a reinstall; if you choose to sign in, we link a Google or Apple account to the same ID; we use Google Play and RevenueCat to handle billing; we collect crash reports to fix bugs; we record which songs you play (and how far you get) so we can pick what to make next; and we store your calibration setting on the device. If you are not a subscriber, we show ads through AppLovin MAX, and the ad networks receive your advertising identifier and device signals (see Section 6). Apart from ads, the gameplay events stay inside our Supabase project and we do not use a third-party product-analytics SDK.
4. Where data goes (sub-processors)
Piano Lux relies on a small number of third-party services. Each one has its own privacy policy:
- Supabase — database + auth (anonymous and linked to Google/Apple). supabase.com/privacy
- Apple (Sign in with Apple) — optional authentication via Apple ID (iOS only). The email and display name provided by Apple are processed by Apple before reaching Supabase. apple.com/legal/privacy
- Google — handles transactions via Google Play Billing and optionally serves as a login provider (Sign in with Google) on iOS and Android. We never see your card details. policies.google.com/privacy
- RevenueCat — purchase processing and entitlement state. revenuecat.com/privacy
- Sentry — crash reporting and performance diagnostics. sentry.io/privacy
- AppLovin — ad mediation (AppLovin MAX) and the consent flow. applovin.com/privacy
- Google (AdMob) — partner ad network via mediation. policies.google.com/technologies/ads
- Meta (Audience Network) — partner ad network via mediation. facebook.com/privacy/policy
- Unity Ads — partner ad network via mediation. unity.com/legal/privacy-policy
The ad networks above (AppLovin, Google, Meta, Unity) receive data as third parties when we show ads; the details are in Section 6. Outside of those advertising cases, we do not share data with anyone outside this list. We do not sell data to anyone, ever.
5. What we DON'T collect
To be unambiguous, the following are never collected by Piano Lux:
- Your phone number — never collected.
- Your real name or email address when you play anonymously — no mandatory sign-up form, no required PII. Signing in with Google or Apple is optional and required only to join the global leaderboard or make purchases; if you choose to sign in, we receive an email address and display name from the provider (Apple may supply a private-relay email if you select "Hide My Email"). That data lives in Supabase Auth. Profile photos from the provider are not collected or used.
- Your precise location — no GPS, no IP geolocation. For the global leaderboard, we read your device's region/language setting to pre-fill the country field when you create your profile; you can change or skip it manually, and we never access GPS or infer location from your IP address.
- Microphone audio. The app plays music but never records; the microphone permission is stripped from the app at build time.
- Photos, contacts, calendar, or files from your device.
- Third-party product-analytics SDKs (Mixpanel, Amplitude, PostHog, Segment, Firebase Analytics, etc.). The play-session events described in Section 3 stay inside our own Supabase project and are never forwarded to a fourth party. The ad networks in Section 6 are the only exception, and receive only the ad-related signals described there.
- Unmasked screen recording. We record discrete events (started, finished, abandoned at X%); Sentry session replay happens only on an error and is fully masked (no readable text, images, or vectors), never a readable video of your screen.
- Persistent hardware device IDs. The install ID referenced in Section 3 is a software-generated UUID created at first launch and stored locally — it is not linked to IMEI, IDFA, Android ID, or any hardware identifier; it is reset when you uninstall the app.
6. Ads and rewards
For players who are not subscribers, Piano Lux shows ads (for example, an interstitial ad when you leave the result screen and an optional rewarded ad). Subscribers see no ads.
Ads are served by AppLovin MAX mediation, which aggregates partner ad networks: Google AdMob, Meta Audience Network, and Unity Ads. When an ad is loaded, those networks act as third parties and may receive your advertising identifier (Advertising ID / GAID), your IP address, device information, and your ad interactions. They use that data for advertising (including personalized, where consent is given), measurement/analytics, and fraud prevention. We do not use the IP for precise location and do not store it.
Consent. On first display, AppLovin drives Google's consent flow (Google UMP / GDPR/TCF), presenting AppLovin's Terms and Privacy Policy. Where applicable, you can opt out of personalized ads and still see non-personalized ads. You can also limit ad tracking in your device settings (Android: "Opt out of Ads Personalization" / reset the Advertising ID).
Partner network policies:
- AppLovin — applovin.com/privacy
- Google — policies.google.com/technologies/ads
- Meta — facebook.com/privacy/policy
- Unity — unity.com/legal/privacy-policy
Rewarded ads. Watching a rewarded ad to the end can grant a ticket in the game. To credit the reward securely, AppLovin's server notifies our backend (Supabase) with an ad impression identifier and the app user ID. We keep this record to credit the reward and to prevent duplicate credit or fraud. The rules for using tickets are in the Terms of Service.
7. Children
Piano Lux is intended for users aged 13 and older. It is not directed to children under 13, and we do not knowingly collect personal information from children under 13. We do not initialize the ads SDK for users the app identifies as under 13. If a leaderboard profile is created (a nickname and optionally a country), that data is publicly visible to all players, and signing in with Google or Apple is required to create one, so we recommend parental supervision for minors. If you believe a child under 13 has used the app, contact us (Section 11) and we will delete the associated data.
8. Data retention
Anonymous IDs, entitlements, and leaderboard data live on Supabase indefinitely so that purchases and achievements survive a reinstall. Uninstalling the app stops new data from being collected, but the records stay unless you ask us to remove them (see Section 9).
For signed-in users (Google or Apple account linked): the provider email and display name are retained as part of the Supabase Auth identity for as long as the account exists. Nickname, country code, and leaderboard scores follow the same indefinite retention. You can request full deletion by emailing us with your registered email address (see Section 9).
Crash reports in Sentry follow Sentry's default retention (90 days). Rewarded-ad grant records are kept for as long as needed to credit the reward and prevent fraud. Data the ad networks receive follows each network's own retention policies (see Section 6). Calibration offset and downloaded chart data live only on your device and are removed when you uninstall.
9. Your rights
You can request a copy of any data linked to your ID, or request that we delete it, by emailing the address in Section 11. We honor verified requests within 30 days.
- Signed-in users (Google or Apple account linked): please include the registered email address so we can locate and delete the account correctly.
- Anonymous users: please include the date and approximate time of your last play session and your country so we can locate the right record.
10. Changes to this policy
If we materially change what we collect or where it goes, we will update the effective date at the top of this document and bump the app's versionName so the change is visible at install time. We commit this document to source control, so the full history is auditable.
11. Contact
For privacy questions, data export, or deletion requests, contact:
Email: carlosga@demerzelstudio.com
We are a small developer team. Please allow up to 30 days for a response.