Política de Privacidad — b-side tasks
1. Quiénes somos
b-side tasks es una aplicación de productividad tipo outliner, disponible para macOS, iOS y Android. Esta política aplica a las tres. El desarrollador es John Salazar (arrieroworks), contactable en arrieroworks@gmail.com.
2. Qué datos recogemos
b-side tasks sincroniza tus tareas entre dispositivos a través de un servidor propio. Ese servidor ve en claro la estructura y los metadatos de tus tareas (para poder resolver conflictos y mantener tu árbol consistente entre dispositivos de forma más simple y confiable), y cifra en tu dispositivo el contenido que escribes libremente, antes de que salga de él. El detalle completo:
Datos que el servidor guarda en claro (puede leer)
- La estructura de tus listas: qué tarea está dentro de qué lista o proyecto, y en qué orden.
- El tipo de cada elemento (Acción, Hábito, Idea, Lista, Racional) y su estado (activo, en espera, completado, cancelado, etc.).
- Fechas de vencimiento y de "en espera hasta", si les asignas alguna.
- La regla de repetición de tus hábitos y acciones recurrentes (por ejemplo, "cada lunes"), y a qué serie de repetición pertenece.
- Si marcaste algo como Importante.
- Si una tarea está eliminada (borrado lógico, para poder sincronizar el borrado entre tus dispositivos) y cuándo se completó, si aplica.
- Metadatos técnicos de versión y fecha de cada cambio, necesarios para resolver conflictos cuando editas lo mismo desde dos dispositivos.
- Un identificador de dispositivo, usado únicamente para llevar la cuenta de qué cambios ya se sincronizaron con cuál de tus dispositivos.
Datos que se cifran en tu dispositivo (el servidor no puede leerlos)
- El título y la nota de cada tarea.
- El nombre de tus etiquetas y áreas (incluidas las siete áreas base y las que crees tú) — el servidor sabe que dos tareas comparten una misma etiqueta (mediante una referencia opaca), pero no sabe cómo se llama esa etiqueta.
- Un campo de datos adicionales específico de cada tipo de elemento (por ejemplo, texto libre asociado a un hábito).
Cada uno de estos tres se cifra en tu dispositivo con AES-256-GCM antes de salir de él, atado a la tarea, al campo y a la versión exactos a los que pertenece — un bloque cifrado no puede reutilizarse para suplantar otro. El servidor solo almacena y transmite esos bloques cifrados; no tiene la clave para leerlos, y nosotros como desarrolladores tampoco. Ver la sección 3 para el detalle de cómo funciona esto y de sus límites.
Otros datos
- Un identificador opaco de tu cuenta de Apple o Google (el campo
subdel token de identidad que Apple/Google emiten al iniciar sesión). No es tu correo, ni tu nombre, ni tu foto de perfil. Tu correo y nombre, si Apple/Google los entregan, se usan solo localmente en tu dispositivo y nunca se envían a nuestro servidor. - La pregunta de cifrado que elijas (entre cuatro predefinidas), guardada en claro junto con los parámetros técnicos del algoritmo de cifrado, para poder mostrártela cuando conectes otro dispositivo. Nunca guardamos tu respuesta.
- Si activas el interruptor de estadísticas de uso anónimas (apagado por defecto — ver sección 2.1), participas en contadores agregados de uso. Si no lo activas, no se incluye ningún dato tuyo en esos agregados.
No recogemos: tu ubicación, tus contactos, fotos, historial de navegación, ni ningún identificador publicitario. No hay anuncios en b-side tasks y no vendemos ni compartimos datos con terceros con fines comerciales.
2.1 Estadísticas de uso anónimas (opcional, desactivado por defecto)
Puedes activar, desde Ajustes, un interruptor de "Compartir estadísticas de uso anónimas". Si lo activas, el servidor calcula contadores agregados diarios (por ejemplo, cuántas acciones completas en promedio, qué funciones se usan más) a partir de los metadatos en claro descritos arriba — nunca a partir del contenido cifrado, y nunca una línea de tiempo por cuenta individual: los agregados solo se muestran cuando hay suficientes cuentas participando para no poder identificar a ninguna en particular. Si está desactivado (el valor por defecto), tu cuenta no contribuye a ningún agregado. Puedes apagarlo en cualquier momento.
Reporte de errores (crash reporting)
b-side tasks usa Sentry para detectar fallos técnicos (cierres inesperados, errores de red). Sentry recibe únicamente información técnica (traza del error, versión de la app, tipo de dispositivo) y nunca el contenido de tus tareas ni tus metadatos de sincronización.
3. Cómo funciona el cifrado del contenido
Cuando activas la sincronización, tu dispositivo genera una llave maestra aleatoria (MEK) que cifra el título, la nota, los nombres de etiquetas y el campo de datos adicionales de cada tarea (ver sección 2) — nunca la estructura, el estado ni las fechas, que viajan en claro. Esa llave maestra, a su vez, se cifra con una segunda llave (KEK) derivada de tu respuesta a una pregunta que tú eliges, usando Argon2id — un algoritmo diseñado para que cada intento de adivinarla sea costoso. A nuestro servidor solo se envía: la MEK ya cifrada, la sal aleatoria que Argon2id necesita para volver a derivar la KEK en tus otros dispositivos, la pregunta que elegiste (en claro) y los parámetros del algoritmo. Nunca tu respuesta ni la MEK sin cifrar.
Esto significa que nuestro servidor no tiene la clave para leer el título, la nota ni el nombre de tus etiquetas — solo almacena bloques cifrados para esos campos. La estructura, el estado y las fechas de tus tareas, en cambio, el servidor sí puede leerlos (sección 2); por eso no decimos que toda la sincronización sea "de extremo a extremo" ni que el servidor "no vea nada" — sería inexacto. Debes conocer dos límites sobre lo que sigue cifrado:
- La protección es tan fuerte como tu respuesta. Una respuesta corta o muy común puede adivinarse con más facilidad, aunque Argon2id encarezca cada intento. Si alguien obtuviera una copia de la base de datos del servidor, podría intentar adivinar respuestas sin conexión. Por eso te recomendamos una frase corta que solo tú recuerdes y no una sola palabra.
- Si olvidas tu respuesta y no conservas ningún dispositivo ya conectado, no podemos recuperarla ni descifrar el título, la nota ni el nombre de tus etiquetas sincronizados: no existe una puerta trasera para esos campos. Tendrás que empezar la sincronización de cero. Las tareas guardadas en cada uno de tus dispositivos no se pierden. Te lo advertimos también dentro de la app antes de que actives la sincronización.
4. Con quién compartimos datos
- Apple y Google, solo para verificar tu identidad al iniciar sesión (reciben lo mismo que reciben de cualquier app que use "Iniciar sesión con Apple/Google" — no reciben nada de tus tareas).
- Nuestro proveedor de base de datos e infraestructura (Google Cloud SQL para PostgreSQL y Google Cloud Run para el servidor), que almacena y transmite tanto los metadatos en claro de la sección 2 como los bloques cifrados, como procesador técnico — no tiene la clave para leer los bloques cifrados, por el mismo diseño descrito arriba.
- Sentry, para reporte de errores técnicos, cuando esté activo (ver sección 2).
No compartimos datos con nadie más, y no vendemos datos a terceros.
5. Cuánto tiempo conservamos tus datos
Conservamos tu cuenta y tus datos mientras la cuenta esté activa. Cuando eliminas una tarea, el servidor conserva un registro de ese borrado ("tombstone") durante 180 días para poder propagarlo a cualquier dispositivo que estuviera desconectado — un dispositivo que reaparece después de esa ventana se trata como si fuera nuevo y vuelve a recibir tu árbol actual completo, en vez de revivir algo que ya habías borrado. Puedes desconectar la sincronización desde Ajustes en cualquier momento, lo que detiene el envío de nuevos cambios pero conserva lo ya sincronizado por si quieres reconectar después. Para eliminar permanentemente tu cuenta y todos tus datos del servidor, usa la opción "Eliminar cuenta de sincronización" en los ajustes de sincronización. Se borran de nuestro servidor tu identificador, tus metadatos, tus datos cifrados y tus llaves cifradas. Los datos guardados en tus dispositivos no se tocan. Eliminar la cuenta no cancela una suscripción comprada en App Store o Google Play: debes cancelarla tú en la tienda correspondiente.
6. Tus derechos
Puedes pedirnos en cualquier momento a arrieroworks@gmail.com que te confirmemos qué datos tenemos asociados a tu cuenta (los metadatos en claro descritos en la sección 2 y los bloques cifrados que no podemos leer) o que los eliminemos.
7. Menores de edad
b-side tasks no está dirigida a menores de 13 años (o la edad mínima aplicable en tu país) y no recogemos a sabiendas datos de menores.
8. Cambios a esta política
Si cambiamos esta política de forma sustancial, lo indicaremos dentro de la app antes de que el cambio entre en vigor.
9. Contacto
Privacy Policy — b-side tasks (English)
1. Who we are
b-side tasks is an outliner-style productivity app for macOS, iOS and Android. This policy covers all three. The developer is John Salazar (arrieroworks), reachable at arrieroworks@gmail.com.
2. What data we collect
b-side tasks syncs your tasks across devices through our own server. That server can read the structure and metadata of your tasks in clear (so it can resolve conflicts and keep your tree consistent across devices more simply and reliably), and encrypts on your device the content you write freely, before it ever leaves it. Full detail:
Data the server stores in clear (can read)
- The structure of your lists: which task sits inside which list or project, and in what order.
- The type of each item (Action, Habit, Idea, List, Rational) and its status (active, waiting, completed, cancelled, etc.).
- Due dates and "waiting until" dates, if you set any.
- The recurrence rule of your habits and recurring actions (e.g. "every Monday"), and which recurrence series it belongs to.
- Whether you flagged something Important.
- Whether a task is deleted (soft delete, so the deletion can sync to your other devices) and when it was completed, if applicable.
- Technical version/timestamp metadata for each change, needed to resolve conflicts when you edit the same thing from two devices.
- A device identifier, used only to track which changes have already synced to which of your devices.
Data encrypted on your device (the server cannot read it)
- The title and note of each task.
- The name of your tags and areas (including the seven base areas and any you create) — the server can tell two tasks share the same tag (via an opaque reference), but it does not know what that tag is called.
- An extra, type-specific data field (e.g. free-form text attached to a habit).
Each of these three is encrypted on your device with AES-256-GCM before it leaves it, bound to the exact task, field and version it belongs to — an encrypted block cannot be replayed to impersonate another one. The server only stores and relays these encrypted blocks; it does not have the key to read them, and neither do we as developers. See section 3 for how this works and its limits.
Other data
- An opaque identifier for your Apple or Google account (the
subclaim from the identity token Apple/Google issue at sign-in). Not your email, name, or profile picture. Your email and name, when Apple/Google provide them, are used only locally on your device and are never sent to our server. - The encryption question you choose (from four predefined ones), stored in clear together with the technical parameters of the encryption algorithm, so we can show it to you when you connect another device. We never store your answer.
- If you turn on the anonymous usage-statistics toggle (off by default — see section 2.1), your account contributes to aggregated usage counters. If you don't turn it on, none of your data is included in those aggregates.
We do not collect: your location, contacts, photos, browsing history, or any advertising identifier. b-side tasks has no ads, and we do not sell or share data with third parties for commercial purposes.
2.1 Anonymous usage statistics (optional, off by default)
From Settings you can turn on "Share anonymous usage statistics". If you do, the server computes daily aggregated counters (e.g. average completed actions, which features are used most) from the in-clear metadata described above — never from encrypted content, and never a per-account timeline: aggregates are only shown when enough accounts participate that no individual one can be identified. If it's off (the default), your account doesn't contribute to any aggregate. You can turn it off at any time.
Crash reporting
b-side tasks uses Sentry to catch technical failures (crashes, network errors). Sentry only receives technical information (error trace, app version, device type) and never your task content or sync metadata.
3. How content encryption works
When you turn on sync, your device generates a random master key (MEK) that encrypts the title, note, tag names and extra-data field of each task (see section 2) — never the structure, status or dates, which travel in clear. That master key is itself encrypted with a second key (KEK) derived from your answer to a question you choose, using Argon2id — an algorithm designed to make every guess expensive. Only this is sent to our server: the already-encrypted MEK, the random salt Argon2id needs to re-derive the KEK on your other devices, the question you chose (in clear) and the algorithm parameters. Never your answer, never the unencrypted MEK.
This means our server does not have the key to read the title, note or tag names of your tasks — it only stores encrypted blocks for those fields. The structure, status and dates of your tasks, on the other hand, the server can read (section 2); that's why we don't say sync as a whole is "end-to-end" or that the server "sees nothing" — it would be inaccurate. You should know two limits on what remains encrypted:
- Protection is only as strong as your answer. A short or very common answer can be guessed more easily, even though Argon2id makes each guess more expensive. If someone obtained a copy of the server's database, they could try to guess answers offline. We therefore recommend a short phrase only you would remember, not a single word.
- If you forget your answer and keep no already-connected device, we cannot recover it or decrypt the title, note or tag names of what was synced: there is no backdoor for those fields. You would have to start sync over from scratch. The tasks stored on each of your devices are not lost. We also warn you about this in-app before you turn sync on.
4. Who we share data with
- Apple and Google, only to verify your identity at sign-in (they receive the same thing any app using "Sign in with Apple/Google" receives — nothing about your tasks).
- Our database/infrastructure providers (Google Cloud SQL for PostgreSQL and Google Cloud Run for the server), which store and relay both the in-clear metadata from section 2 and the encrypted blocks, as a technical processor — without the key to read the encrypted blocks, by the same design described above.
- Sentry, for technical crash reporting, once active (see section 2).
We do not share data with anyone else, and we do not sell data to third parties.
5. How long we keep your data
We keep your account and data while the account is active. When you delete a task, the server keeps a record of that deletion ("tombstone") for 180 days so it can propagate to any device that was offline — a device that reappears after that window is treated as new and receives your current full tree again, instead of reviving something you already deleted. You can disconnect sync from Settings at any time, which stops new changes from being sent but keeps what's already synced in case you reconnect later. To permanently delete your account and all your data from the server, use "Delete sync account" in the sync settings. Your identifier, your metadata, your encrypted data and your encrypted keys are removed from our server. Data stored on your devices is not touched. Deleting the account does not cancel a subscription bought through the App Store or Google Play: you must cancel it yourself in the corresponding store.
6. Your rights
You can ask us at any time at arrieroworks@gmail.com to confirm what data we hold for your account (the in-clear metadata from section 2 and the encrypted blocks we cannot read) or to delete it.
7. Children's privacy
b-side tasks is not directed at children under 13 (or the applicable minimum age in your country) and we do not knowingly collect data from children.
8. Changes to this policy
If we make a material change to this policy, we'll indicate it in-app before the change takes effect.