Demerzel Studio
/ pianohero / privacy

PIANO HERO

Política de Privacidade Privacy Policy

Aplicativo móvel — jogo de ritmo musical Mobile application — music rhythm game

VIGÊNCIA: 2026-07-19 EFFECTIVE DATE: 2026-07-19

1. Sobre o aplicativo

Piano Hero é um jogo de ritmo musical para dispositivos móveis. Você toca e segura notas que caem em sincronia com músicas. Não há rede de publicidade e não há SDK de analytics 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-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 + tag auth_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. Esta versão não exibe anúncios.
  • 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 Hero acessa. Foi auditada contra o código-fonte em 2026-07-19.

TipoOndePor quêPara onde vaiIdentificado?
ID anônimo do SupabaseInício do app, automáticoManter estado de assinatura entre reinstalaçõesSupabase AuthAnô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 anonimamenteCriar conta recuperável que preserve compras e progresso entre reinstalações e troca de aparelhoSupabase 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 loginExibição no placar global para outros jogadoresTabela user_profiles no SupabasePÚ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 manualmenteExibir bandeira no placar globalTabela user_profiles no SupabasePÚ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 logadoClassificação competitiva globalTabela leaderboard_entries no SupabasePÚBLICO — visível para todos os jogadores no placar global
ID de assinante RevenueCatPrimeira visualização do paywallIdentificar cliente para restauração de compraBackend RevenueCat (vinculado ao token de compra Google Play)Pseudônimo — só conta Play
Tokens de compra (Weekly / Monthly / Lifetime)No momento da compraValidar direito de usoGoogle Play Billing → RevenueCat → linha entitlements no SupabaseVinculado à 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 performanceDiagnosticar falhas em produçãoProjeto Sentry piano-heroVinculado 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 toquesPreservar offset entre reiníciosAsyncStorage (apenas no dispositivo)Local apenas, nunca transmitido
Lista de músicas pinadasApós pinar músicaPreservar pin entre reinstalaçõesLinha pinned_songs no Supabase, chaveada pelo ID anônimoVinculado ao ID anônimo do Supabase
JSON do chart + áudio (músicas baixadas)Ao selecionar música remotaCache para jogar offlinedocumentDirectory localLocal 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úsicaDecidir quais músicas manter, quais merecem v2, e quais dificuldades estão duras demaisLinha play_sessions no Supabase, chaveada pelo ID anônimoVinculado 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 ocorremEntender quais telas convertem, quais conteúdos são consumidos e como o app é usadoLinha app_events no Supabase, chaveada pelo ID anônimoVinculado ao ID anônimo do Supabase

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. Não há SDK de analytics de terceiros; os eventos de gameplay ficam dentro do nosso projeto Supabase.

4. Para onde os dados vão (subprocessadores)

Piano Hero 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

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 Hero:

  • 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 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.
  • 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.
  • Identificadores de publicidade. Esta versão do Piano Hero não exibe anúncios e não coleta o Advertising ID (o SDK de anúncios não está incluído no app).
  • 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. Crianças

Piano Hero é 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. 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 10) e apagaremos os dados associados.

7. 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 8).

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 8).

Relatórios de crash no Sentry seguem a retenção padrão do Sentry (90 dias). Offset de calibração e dados de chart baixados ficam apenas no seu aparelho e são removidos quando você desinstala o app.

8. 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 10. 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.

9. 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.

10. 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 Hero is a mobile rhythm game. You tap and hold falling notes in time with music. There is no advertising network and no third-party 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-07-19 — Corrected the crash-report disclosure: reports are linked to the pseudonymous install/anonymous ID (via setUser + an auth_uid tag), not to a real identity. Target audience set to 13+. The microphone permission is now stripped from the app at build time. This version shows no ads.
  • 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 Hero touches. It was audited against the source code on 2026-07-19.

TypeWherePurposeWhere it goesLinked to identity?
Anonymous Supabase user IDApp startup, automaticTrack entitlement state across reinstallsSupabase AuthAnonymous — no email/PII
Provider email and display name (Google or Apple)When you sign in with Google or Apple — optional; not collected for anonymous playersCreate a recoverable account that preserves purchases and progress across reinstalls and device changesSupabase 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
NicknameWhen you first set up your leaderboard profile — requires sign-inDisplay on the global ranking for other players to seeSupabase user_profiles tablePUBLIC — 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 manuallyDisplay a flag on the global leaderboardSupabase user_profiles tablePUBLIC — 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 inGlobal competitive rankingSupabase leaderboard_entries tablePUBLIC — visible to all players on the global leaderboard
RevenueCat subscriber IDFirst paywall viewIdentify customer for purchase restorationRevenueCat backend (linked to Google Play purchase token)Pseudonymous — Play account only
Purchase tokens (Weekly / Monthly / Lifetime)At purchaseValidate entitlementGoogle Play Billing → RevenueCat → Supabase entitlements rowLinked 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 performanceDiagnose crashes in productionSentry piano-hero projectLinked to the pseudonymous install/anonymous ID (via setUser + an auth_uid tag) — not to real identity
Calibration audio offset (integer ms)After 8-tap calibrationPersist offset across app restartsAsyncStorage (device only)Local only, never transmitted
Pinned songs listAfter song pinPersist pin grant across reinstallsSupabase pinned_songs row keyed by anonymous user IDLinked to anonymous Supabase user ID
Chart JSON + audio (downloaded songs)When user selects a remote songCache for offline playLocal documentDirectoryLocal 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 songDecide which songs to keep, which to make a v2 of, and which difficulties are too hardSupabase play_sessions row keyed by anonymous user IDLinked 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 occurUnderstand which screens convert, which content is consumed, and how the app is usedSupabase app_events row keyed by anonymous user IDLinked to anonymous Supabase user ID

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. There is no third-party analytics SDK; the gameplay events stay inside our Supabase project.

4. Where data goes (sub-processors)

Piano Hero 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

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 Hero:

  • 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 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.
  • 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.
  • Advertising identifiers. This version of Piano Hero does not show ads and does not collect the advertising ID (the ads SDK is not bundled in the app).
  • 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. Children

Piano Hero 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. 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 10) and we will delete the associated data.

7. 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 8).

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 8).

Crash reports in Sentry follow Sentry's default retention (90 days). Calibration offset and downloaded chart data live only on your device and are removed when you uninstall.

8. 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 10. 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.

9. 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.

10. 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.

Demerzel Studio
Terms / Termos carlosga@demerzelstudio.com
© 2026 Demerzel Studio LLC. All rights reserved. 30 N Gould St, STE R, Sheridan, WY 82801, USA