Política de Privacidad — No Panic
Fecha de entrada en vigor: Se establecerá antes del envío a las tiendas
Última actualización: 2026-05-07
Editor: No Panic Labs (nombre de trabajo temporal hasta que se finalice la entidad legal), Ucrania.
Contacto de soporte: denysdubov88@gmail.com (también el único canal para solicitudes de privacidad / RGPD).
URL canónica: https://denid88.github.io/nopanic-app/privacy-policy.es.html
Esta Política de Privacidad explica cómo No Panic Labs («nosotros», «nuestro») gestiona la información en relación con la aplicación móvil No Panic (la «App»). Al usar la App reconoces que has leído esta Política.
Diseñamos No Panic para que respete la privacidad por defecto:
- Sin cuenta, sin registro, sin inicio de sesión. La App es totalmente anónima.
- Sin publicidad y sin SDK de informes de fallos. La App no lee tu ID publicitario (IDFA / GAID) directamente. En iOS, si — y solo si — aceptas la analítica, la App presenta el aviso de App Tracking Transparency (ATT) de Apple para que Firebase Analytics pueda incluir el IDFA en su medición; rechazar el aviso ATT se respeta plenamente y la App sigue funcionando igual.
- La analítica es estrictamente opcional. La App usa Firebase Analytics para entender el uso agregado, pero la recopilación está desactivada por defecto y solo se activa después de que aceptes explícitamente — durante el onboarding o más tarde en Ajustes → Privacidad. Puedes desactivarla de nuevo en cualquier momento y se instruye al SDK para que deje de recopilar inmediatamente.
- Las entradas del diario y los favoritos permanecen en tu dispositivo. Nunca se suben a nosotros.
- Los servicios externos con los que habla la App son: el proveedor de suscripción (RevenueCat + Apple / Google) cuando interactúas con el paywall, Google Fonts al cargar la tipografía, y — solo si consentiste — Firebase Analytics.
Lee a continuación los detalles.
1. Quién es el responsable
El responsable del tratamiento es No Panic Labs, establecido en Ucrania. Contacto: denysdubov88@gmail.com. No hemos designado un Delegado de Protección de Datos formal — todas las solicitudes de privacidad van al mismo correo.
2. Qué almacena la App en tu dispositivo
La App guarda la siguiente información solo localmente en tu dispositivo. No recibimos ni leemos estos datos.
| Almacenamiento | Qué contiene | Por qué |
|---|---|---|
SharedPreferences (iOS NSUserDefaults / Android SharedPreferences) — sin cifrar |
Flag onboarding_completed |
Saltar onboarding después del primer arranque. |
SharedPreferences |
pro_entitlement_cache — instantánea JSON de tu derecho Pro más reciente (flag activo, fecha de expiración, flag de renovación, ID de producto, flag de prueba) |
Mostrar el estado de bloqueo correcto al inicio en frío, incluso sin conexión. |
SharedPreferences |
affirmation_favorites — IDs de afirmaciones que marcaste |
Permitirte revisar tus favoritas. |
SharedPreferences |
affirmation_of_day_id + affirmation_of_day_date |
Mostrar una «afirmación del día» estable. |
SharedPreferences |
analytics_consent — booleano; false por defecto, se pone a true solo tras tu aceptación explícita |
Controla la recopilación de Firebase Analytics (ver §3.4). |
Base de datos local SQLite nopanic_journal.db, tabla journal_entries |
Cuerpo del texto del diario, emoji de ánimo opcional, marcas de tiempo de creación/actualización, ID local autoincrementada | Potencia la función Diario. |
Base de datos local SQLite nopanic_medication.db |
Nombres de medicamentos, dosis, horarios e historial de dosis que introduces en el Rastreador de Medicación | Potencia la función Rastreador de Medicación. Almacenado solo en tu dispositivo; nunca transmitido a nuestros servidores, servicios de terceros o proveedores de analítica. |
| Caché de audio gestionada por el SO | Estado de reproducción en caché de los archivos de audio incluidos | Reproducción fluida de los ejercicios. |
| Caché local de Firebase Analytics (solo si se ha concedido consentimiento) | Un Firebase Instance ID pseudónimo limitado a la app y una cola de eventos esperando subida | Buffer de analítica entre subidas de red. Borrado cuando revocas el consentimiento o desinstalas. |
Todo lo anterior se elimina al desinstalar la App o usar la acción «Borrar datos» / «Descargar app» del sistema operativo.
La App no recopila ni almacena:
- tu nombre, dirección de correo, teléfono o ubicación precisa;
- ID publicitario (IDFA / GAID) — la App no lee el IDFA o GAID por sí misma. En iOS, cuando aceptas en la pantalla de Consentimiento de Analítica, la App presenta el aviso de App Tracking Transparency (ATT) de Apple para que Firebase Analytics pueda acceder al IDFA con fines de medición; si rechazas el aviso ATT, o rechazas la analítica por completo, el IDFA no se comparte con Firebase. En Android, la App no solicita ni lee el Google Advertising ID (GAID);
- contactos, calendarios, fotos, entrada de micrófono o cámara;
- historial de navegación o cualquier uso fuera de la App;
- tokens push (la App no tiene notificaciones push).
Datos de medicación — Los nombres, dosis, horarios e historial de dosis que introduces en el Rastreador de Medicación se almacenan solo en tu dispositivo usando la base de datos local (SQLite). Nunca se transmiten a nuestros servidores, servicios de terceros o proveedores de analítica. Los conteos de eventos anonimizados (por ejemplo, que una dosis fue registrada) pueden enviarse si aceptaste la analítica, pero nunca el nombre del medicamento ni ningún detalle identificativo.
3. Terceros que pueden procesar datos sobre ti
El uso de la App activa un conjunto mínimo y específico de interacciones con terceros. Los enumeramos exhaustivamente.
3.1 Apple (App Store) y Google (Google Play)
- Qué procesan: tus transacciones de compra y suscripción, recibos de transacciones, tu cuenta de tienda (Apple ID / cuenta de Google) y la telemetría que recoge tu plataforma a nivel de SO.
- Por qué: facturación, gestión de suscripciones, reembolsos.
- Dónde: regido por las políticas de privacidad propias de Apple y Google.
- Nuestra visibilidad: podemos ver resultados de compra anónimos a través de RevenueCat (ver abajo). No vemos tu nombre, correo o datos de pago.
3.2 RevenueCat
- Qué procesan: un RevenueCat App User ID pseudónimo que el SDK genera en tu dispositivo, tus eventos de compra, estado de suscripción, plataforma y país, y la clave API de RevenueCat en uso. Consulta la política de privacidad de RevenueCat para el panorama completo.
- Por qué: usamos RevenueCat para configurar productos de suscripción, comprobar si actualmente tienes el derecho
proy manejar los flujos de compra / restauración, sin construir nuestro propio backend de validación de recibos. - Cuándo la App contacta a RevenueCat: al arrancar la app (para obtener el derecho actual y cachearlo), al abrir el paywall (para cargar ofertas de productos) y al pulsar Suscribirse o Restaurar.
- Dónde: servidores de RevenueCat. La infraestructura de RevenueCat está principalmente en Estados Unidos; las transferencias están cubiertas por sus términos estándar de protección de datos.
3.3 Google Fonts (carga de fuente en tiempo de ejecución)
- Qué procesan: una solicitud HTTP estándar al CDN de fuentes de Google para la tipografía «Quicksand», incluyendo tu dirección IP y metadatos básicos de solicitud.
- Por qué: la App usa el paquete
google_fonts, que descarga el archivo de fuente en su primer uso. Una vez obtenido, lo cachea localmente el paquete. - Nota: si lo desactivas, parte del texto recurrirá a fuentes del sistema. Podríamos incluir la fuente como recurso empaquetado en una versión futura para eliminar esta llamada externa.
3.4 Firebase Analytics (solo con consentimiento)
- Qué es: el SDK Firebase Analytics de Google (
firebase_core+firebase_analytics), integrado para ayudarnos a entender el uso agregado — qué funciones usa la gente, dónde abandonan los flujos, qué ejercicios ayudan más. Ningún contenido bruto (texto del diario, favoritos, mensajes) sale jamás del dispositivo. - Modelo de consentimiento: desactivado por defecto. El SDK se inicializa con la recopilación apagada. Mostramos una pantalla de Consentimiento de Analítica durante el onboarding y ponemos el mismo interruptor en Ajustes → Privacidad. Solo después de que aceptes / actives el interruptor llamamos a
setAnalyticsCollectionEnabled(true). Revocar el consentimiento llama asetAnalyticsCollectionEnabled(false)inmediatamente y suprime todas las llamadas de eventos y propiedades de usuario en el proceso. - App Tracking Transparency (solo iOS): cuando aceptas en la pantalla de Consentimiento de Analítica en iOS, la App llama a la API ATT de Apple (vía el paquete
app_tracking_transparency) para mostrar el aviso del sistema. Tu elección determina si Firebase Analytics puede asociar el identificador publicitario (IDFA) con eventos de analítica. Si pulsas «Pedir a la App que no rastree» (o tenías el tracking desactivado globalmente), el IDFA nunca se comparte con Firebase — la analítica sigue funcionando usando solo el Firebase Instance ID pseudónimo. Nunca leemos el IDFA nosotros mismos. Para nuestra propia medición de tasas de opt-in, adjuntamos el resultado (authorized/denied/restricted/not_determined/not_supported) como parámetroatt_statusen el eventoanalytics_consent_set. Puedes cambiar tu elección de tracking en cualquier momento en Ajustes de iOS → Privacidad y Seguridad → Tracking. - Qué se recopila (solo mientras está habilitado):
- Vistas de pantalla (a través del
FirebaseAnalyticsObserverde Firebase conectado a GoRouter). - Eventos de producto que registramos explícitamente — p. ej.
emergency_tapped,panic_flow_started/panic_flow_tip_viewed/panic_flow_completed/panic_flow_exited,exercise_opened/exercise_session_started/exercise_session_completed,games_opened/game_started/game_completed/game_exited,journal_entry_saved(con un conteo de palabras agrupado como1-25, nunca el conteo bruto ni el texto),affirmation_favorited,paywall_shown/paywall_subscribe_tapped/purchase/restore_completed,settings_opened,legal_opened,support_opened,language_changed,onboarding_*,analytics_consent_shown/analytics_consent_set. La lista completa está enlib/core/services/analytics_event.dart. - Parámetros de evento limitados a metadatos no identificativos: IDs de escenario, índices de tips, IDs de preset, nombres de ejercicio, nombres de juego (p. ej.
snake,tetris,bubble_pop,mandala,memory_pairs), puntuaciones numéricas de juego (p. ej. longitud de snake, líneas eliminadas en tetris, % de precisión en bubble-pop, movimientos en memory-pairs), IDs de producto, moneda, valor del plan, duración en segundos, porcentaje de progreso, grupo de conteo de palabras, fuente de apertura de pantalla, código de idioma origen/destino, resultado de ATT (att_status:authorized/denied/restricted/not_determined/not_supported). - Propiedades de usuario:
has_pro(true / false — si actualmente tienes el derecho Pro),app_language(tu código de idioma de UI),onboarding_completed(true / false). - Identificadores recogidos automáticamente por Firebase: un Firebase Instance ID pseudónimo (limitado a la app, se reinicia al desinstalar o al revocar el consentimiento), dirección IP (usada para geolocalización aproximada y luego descartada según la política de retención de Google), modelo de dispositivo, versión de SO, versión de app.
- Vistas de pantalla (a través del
- Qué nunca se envía: texto del diario, títulos del diario, texto de afirmación, contenido de tips, notas, audio reproducido, listas de favoritos, ubicación precisa, ID publicitario, correo, teléfono o cualquier identificador vinculado a tu nombre.
- Dónde: servidores Firebase de Google (Estados Unidos y otras regiones de Google), regido por la política de privacidad de Google y los términos de procesamiento de datos de Firebase.
- Retención: configuramos el proyecto Firebase para usar la ventana predeterminada de retención de datos de usuario de Google (actualmente 14 meses para datos a nivel de usuario); los datos agregados de informes se retienen indefinidamente.
- Cómo desactivarlo: Ajustes → Privacidad → interruptor Analítica. Esto pone
analytics_consentafalse, llama asetAnalyticsCollectionEnabled(false)y el SDK deja de recopilar en este dispositivo.
3.5 Servicios que no se ejecutan
Por transparencia, la App no incluye:
- Amplitude, Mixpanel, PostHog o cualquier SDK de analítica distinto del Firebase Analytics descrito en §3.4;
- Sentry, Crashlytics, Bugsnag o cualquier otro SDK de informes de fallos;
- SDK publicitarios;
- SDK de inicio de sesión social;
- SDK de Facebook, SDK de TikTok, AppsFlyer, Adjust, Branch o SDK de atribución similares;
- servicios de notificaciones push (no se integra mensajería FCM/APNs, aunque Firebase Core esté presente).
4. Permisos que solicita la App
La App no solicita el micrófono, la cámara, la ubicación, contactos, fotos, calendario ni Bluetooth. En iOS, la App sí solicita el permiso de App Tracking Transparency (ATT) de Apple — solo cuando aceptas afirmativamente la analítica en la pantalla de Consentimiento de Analítica, nunca al primer arranque y nunca si rechazas la analítica. El propósito se describe en §3.4.
La App reproduce audio empaquetado usando APIs estándar del SO. Para habilitar la reproducción en segundo plano del ejercicio Dormir — para que la música siga sonando cuando bloqueas la pantalla y los controles de pantalla de bloqueo / Centro de Control / Notificaciones permanezcan disponibles — la App declara las siguientes capacidades del SO sin aviso: en Android, los permisos WAKE_LOCK, FOREGROUND_SERVICE y FOREGROUND_SERVICE_MEDIA_PLAYBACK y un servicio en primer plano para reproducción multimedia (proporcionado por el paquete audio_service); en iOS, el valor audio en el array UIBackgroundModes de Info.plist. Ninguna de estas capacidades muestra un aviso de permiso interactivo ni concede acceso de la App a tus datos — solo permiten que el propio motor de audio de la App siga reproduciendo mientras la App está en segundo plano o la pantalla está apagada.
5. Niños
La App no está dirigida a niños menores de 13 años y no recopila a sabiendas datos personales de ellos. Si crees que un niño por debajo de la edad mínima ha usado la App, contáctanos para que podamos ayudar.
6. Tus derechos legales (RGPD, UA, UK GDPR, CCPA)
Como la App no asocia ningún dato con tu identidad, muchos derechos tradicionales (acceso, exportación, supresión de «tus datos personales») no se aplican en el sentido habitual — no hay registro del lado del servidor vinculado a ti. No obstante, tienes derecho a:
- Acceso / portabilidad: exporta tus entradas del Diario manualmente copiándolas desde la App. Aún no hay función de exportación incorporada; contáctanos si necesitas ayuda.
- Supresión: elimina entradas individuales del Diario dentro de la App; elimina todos los datos de la App desinstalando, usando la acción «Borrar datos» / «Descargar app» / «Restablecer» de tu SO, o restableciendo el dispositivo.
- Datos de suscripción: para registros de compra y suscripción que tengan Apple, Google o RevenueCat, ejerce tus derechos directamente con esos proveedores — ellos pueden identificarte por cuenta de tienda. Te asistiremos si nos contactas.
- Oponerse / restringir / reclamar: puedes oponerte al tratamiento o restringirlo. Si estás en la UE/EEE, Reino Unido o Suiza, también puedes presentar una reclamación ante tu autoridad nacional de protección de datos. En España, la autoridad es la Agencia Española de Protección de Datos (AEPD). Los residentes en California pueden ejercer derechos CCPA; no «vendemos» ni «compartimos» información personal para publicidad conductual entre contextos.
Para ejercer cualquier derecho, escribe a denysdubov88@gmail.com.
7. Base legal (UE/EEE, Reino Unido, Suiza)
Donde se aplique el RGPD o una ley equivalente, las bases legales para el tratamiento mínimo descrito arriba son:
- Contrato (Art. 6(1)(b) RGPD) — proporcionar la App y, cuando proceda, procesar tu suscripción.
- Interés legítimo (Art. 6(1)(f) RGPD) — cachear el estado del derecho para que la App funcione sin conexión, obtener la fuente usada por la UI y mantener la integridad del paywall.
- Consentimiento (Art. 6(1)(a) RGPD) — la única base legal para Firebase Analytics. La recopilación está desactivada por defecto y solo se activa después de que aceptes afirmativamente en la pantalla de Consentimiento de Analítica (o en Ajustes → Privacidad). Puedes retirar el consentimiento en cualquier momento con el mismo interruptor, sin efecto en tu capacidad de usar la App. La retirada no afecta a la licitud del tratamiento realizado antes de la retirada.
8. Transferencias internacionales
La App misma almacena datos en tu dispositivo en tu país de residencia. Cuando interactúas con el paywall, RevenueCat y App Store / Google Play pueden transferir datos internacionalmente (principalmente a Estados Unidos) bajo sus propias salvaguardas (Cláusulas Contractuales Tipo y mecanismos equivalentes). Si has habilitado la analítica, Firebase Analytics también transfiere datos de eventos a la infraestructura de Google (principalmente a Estados Unidos) bajo las Cláusulas Contractuales Tipo de Google y mecanismos equivalentes.
9. Retención
- Datos en el dispositivo: conservados hasta que los elimines o desinstales la App.
- RevenueCat: conservados según la política de retención de RevenueCat para datos de suscripción.
- Apple / Google: conservados según sus respectivas políticas.
- Firebase Analytics (solo si aceptaste): datos a nivel de usuario retenidos durante la ventana predeterminada de 14 meses configurada en nuestro proyecto Firebase; datos agregados de informes retenidos indefinidamente. Revocar el consentimiento o desinstalar detiene la recopilación adicional; los eventos ya subidos pueden eliminarse a petición (ver §6).
- Correspondencia de soporte: si nos escribes a denysdubov88@gmail.com, guardamos el hilo de correo hasta 24 meses y luego lo eliminamos.
10. Seguridad
Mantenemos el procesamiento del lado del servidor al mínimo y nos apoyamos en el sandboxing de Apple y Google para proteger los datos almacenados en tu dispositivo. La App no cifra las entradas del Diario más allá de lo que proporciona el sistema operativo en reposo; si tu dispositivo admite cifrado completo del disco y has habilitado un código de acceso, tus datos se benefician de ello. Recomendamos mantener tu SO actualizado y usar un código de acceso o bloqueo biométrico.
11. Cambios en esta Política
Podemos actualizar esta Política a medida que la App evolucione. Los cambios se reflejarán en la fecha de «Última actualización» arriba y, si son materiales, destacados en la App o en la ficha de tienda. El uso continuado tras la entrada en vigor de la Política actualizada constituye aceptación.
12. Contacto
Preguntas, solicitudes o quejas sobre esta Política: denysdubov88@gmail.com.
Apéndice A — Inventario técnico (para completitud)
Esta sección refleja lo que vería un desarrollador o auditor en el código, para que nada en la App quede sin revelar.
- Plataforma: Flutter (Dart
^3.11.3), distribuido globalmente en Apple App Store y Google Play; nombre de paquete / identificador de bundleapp.nopanic. - Paquetes de terceros usados que pueden tocar la red o el almacenamiento del SO:
purchases_flutter(RevenueCat),firebase_core+firebase_analytics(Firebase Analytics — sujeto al consentimiento opt-in),app_tracking_transparency(solo iOS — muestra el aviso ATT del sistema cuando se acepta la analítica, como se describe en §3.4),google_fonts(carga de fuente en tiempo de ejecución),just_audio+audio_service+audio_session(reproducción local de audio, incluida reproducción en segundo plano y controles de pantalla de bloqueo / Centro de Control / Notificaciones para el ejercicio Dormir vía unAudioHandlerpersonalizado; otros ejercicios usan solojust_audiosimple),shared_preferences(almacenamiento clave-valor local, incluido el flaganalytics_consent),sqflite(SQLite local),url_launcher(abre URLs externas en el navegador del sistema cuando pulsas Términos, Privacidad o Soporte),package_info_plus(lee la versión/número de build local de la app). - URLs externas abiertas (solo cuando las pulsas): la URL de los Términos, la URL de la Privacidad y el enlace
mailto:del correo de Soporte. - Claves API: una clave SDK pública de RevenueCat se compila en el build vía
--dart-define. La configuración de Firebase (GoogleService-Info.plist/google-services.json) se empaqueta en tiempo de build. Estas claves identifican la app, no a ti. - Ningún backend propiedad del Editor procesa datos de usuario en el momento de escribir esto; los datos de analítica son procesados por Google en nuestro nombre solo tras consentimiento explícito.
Apéndice B — Resumen de eliminación de datos (para revisión de tienda)
Si un revisor de tienda pregunta «¿cómo elimina un usuario sus datos?»:
- Dentro de la App: abrir Diario, eliminar entradas individualmente. En el Rastreador de Medicación, eliminar medicamentos y entradas del historial de dosis individualmente.
- Desinstalar la App, o usar la acción «Borrar datos» (Android) / «Descargar app + Eliminar» (iOS) de tu dispositivo. Esto elimina todos los datos de la App en el dispositivo, incluidas entradas del Diario, favoritos de afirmación, flag de onboarding, caché de derecho Pro, flag
analytics_consenty el Firebase Instance ID. - Para detener la recopilación de analítica en curso, abrir Ajustes → Privacidad y desactivar el interruptor de Analítica. Para eliminar también los eventos de analítica previamente subidos, escribir a denysdubov88@gmail.com y se iniciará una solicitud de eliminación contra el proyecto Firebase.
- Para cancelar o eliminar datos de suscripción que tengan Apple, Google o RevenueCat, usa las herramientas de gestión de suscripción en tu cuenta de App Store o Google Play, o escribe a denysdubov88@gmail.com para asistencia.