Bati GitHub

Diese Datenschutzerklärung gibt es nur auf Englisch und Französisch. Unten steht die englische Fassung, sie ist maßgeblich. Die App selbst ist auf Deutsch verfügbar, von einer KI übersetzt und noch nicht von Muttersprachlern geprüft. Fragen beantworte ich gern auf Englisch oder Französisch: contact@getbati.app

Esta política de privacidad solo existe en inglés y en francés. Debajo figura la versión en inglés, que es la que hace fe. La app está disponible en español, traducida por una IA y todavía sin revisar por hablantes nativos. Puede escribirme con cualquier pregunta, en inglés o en francés: contact@getbati.app

Privacy Policy for Bati

Last updated: 4 October 2026

Bati is an offline-first training app. It has no account, no server of its own, and no analytics. This page exists because both app stores require a privacy policy URL, and because the short version deserves to be said plainly:

Bati collects nothing about you. Nothing you record in the app leaves your phone unless you send it yourself. Three exceptions, all off by default: the map behind an outing, which tells a map host roughly where you go; a daily question to GitHub about a newer version of the app; and device sync, which sends your history encrypted on the phone to a server you name, where it cannot be read.

One sentence of that used to be shorter. Until outings landed, the app made no network request of any kind, and that was enforced by refusing itself the INTERNET permission. Drawing a map behind a walk needs the map, so the permission is now in the build, and the honest version of the promise is one line longer rather than gone: the map is a setting, off until you switch it on, and until then the app still makes no request of any kind. A second switch joined it on 20 September 2026, for the copies that no store updates, and a third on 25 September 2026, for heroes with more than one device: see the map, the version check and device sync below.

What is stored, and where

Everything Bati records (your workouts, sets, reps, hold times, quests, adventures, village, achievements, flame, oath, avatar, settings, the photos you give an exercise or a quest, and the GPS points and air-pressure readings of an outing) is written to a SQLite database inside the app’s private storage on your device.

Backups you make

Settings offers three ways to write that database to a file. Save a file opens Android’s own “Save as” screen: you name the file and pick where it goes (this device, Downloads, a cloud app you have installed, a USB stick). A small link next to it, Send to another app, hands the file to your system’s share sheet instead. Automatic backup writes it into a folder you choose once, and then again on its own once a day and before each app update. Where any of those files goes from there is entirely your choice: the app sends it nowhere and has no way to.

What Bati never does

The map, and the one host

An outing (a walk, a run, a ride) records where you went, so it can tell you how far you travelled. Those points stay in the database on your phone, like everything else.

Drawing them on a map needs a map, and the map is off by default. A fresh install draws the route as a line on the app’s own dark background, and requests nothing. Settings has one switch for the map; turn it on and Bati asks tiles.openfreemap.org for tiles, the square images a map is made of, and that is the first of the app’s three network destinations. OpenFreeMap serves OpenStreetMap data, free, with no key and no registration.

The version check, and the second host

F-Droid and the Play Store both notice a new version of an app and tell you about it. A copy installed by hand from an APK has nobody to tell it anything, and can sit a year behind without knowing. So Settings has a second switch, Check for updates, and it is off by default too.

Switched on, Bati asks api.github.com once a day whether a newer version has been published, and puts a card on the home screen when the answer is yes.

Syncing your devices, and the host you choose

A phone and a tablet, or an old phone and a new one, can share one hero. Settings has a third switch, Sync my devices, and it is off by default. It only works with Encrypt my backups on, and refuses to start otherwise.

Switched on, you choose a server of your own that speaks WebDAV. With Nextcloud, you type its address and sign in on that server’s own page, in your browser: Bati never sees your Nextcloud password, the server hands it a separate app password you can revoke there at any time (Nextcloud, Settings, Security). With any other WebDAV server (kDrive, Koofr, a NAS, or Round Sync serving another cloud from your phone), you type its address, a user and an app password. Then, each time the app opens and whenever you ask, each of your devices sends its whole history to a Bati folder on that server, and reads the others’ to tell you if one of them is ahead.

Permissions, and why

Location, precise and approximate (optional). Used by one thing: measuring the ground an outing covers. The app reads your position while an outing is running and stops the moment the session ends. The points are written to the local database, and leave the phone only inside an encrypted sync or a backup you make. Decline it, or never start an outing, and the rest of the app is unaffected. Android requires the approximate permission to be requested alongside the precise one; only the precise one is actually read, because approximate location cannot measure a run.

Air pressure (no permission). During an outing, on a phone that has a barometer, the app reads the air pressure to measure how much you climbed, more finely than GPS altitude can. The readings are stored with the outing’s points and follow them: into your backups and an encrypted sync, nowhere else. Android asks no permission for this sensor, so it is written here instead.

Running with the screen off (Android). An outing keeps a foreground service and a wake lock alive so the trace does not stop when your phone sleeps in a pocket. That is what the permanent notification during an outing is for: an app watching your position should say so, on screen, the whole time.

Notifications (optional). Asked for when you turn the training reminder on in Settings, and used for the outing notification above. Reminders are scheduled on your phone by Android itself, on the days and at the hour you chose: there are no push notifications, so there is no server that knows your device. To show a reminder on time and act on its two buttons, the phone keeps a small journal of the last ten days a reminder rang (the day, the time it rang, what it said, and whether you tapped it, pushed it back or paused it). It stays in the app’s own storage on your phone, is never sent anywhere and is not in your backups. The one way anything about it leaves the phone is inside a bug report mail you read and send yourself: whether the reminder is on, and four counts.

Starting with your phone (Android). A restart clears every scheduled alarm, so Bati asks to be told when your phone has started, to schedule the next reminder again. Nothing else runs at that moment, and nothing at all if the reminder is off.

Internet. For the map, the version check and device sync, each only while its own switch is on in Settings. What each request reveals is in its section above.

Network state. Whether you are online, and over what kind of connection. The map library asks so it can stop requesting tiles when there is nothing to request them over. It reports no identity, no network name and no location, and it is only meaningful at all because of the permission above it. Bati deliberately does not take the neighbouring Wi-Fi permission, which would name the networks around you, and a network name is a location by another route.

Photos (optional). If you choose a photo as your hero avatar, the app reads that one image from your library and keeps a pointer to it on your device; the image itself is never copied or sent. If you give a photo to an exercise or a quest you made, the app shrinks it and stores it in the database like the rest of your data, so it travels with your backups and an encrypted sync, and nowhere else. Decline the permission and the app works normally with the built-in images.

Home-screen widget (Android, optional). The flame widget reads your flame from the same on-device database.

Biometrics (optional). Used for one thing: showing your twelve backup recovery words again, behind your fingerprint. Android runs the check; Bati never sees your fingerprint, only whether it matched. Nothing else in the app asks for it, and every backup opens with its password without it.

Crash reports

If Bati crashes, it writes the error and its stack trace to your device only. When a feature fails without crashing (a backup that could not be written, say), the error message is kept the same way; that message may include the name of a folder or file you chose, or the address of your sync server.

Nothing is transmitted automatically. If you want to help fix a crash, Settings has a “Report a bug” action that opens your own email app with the report filled in. You can read it, edit it, or delete it before sending, and if you never send it, it never leaves your phone. Reports you do send are used only to fix the bug and are not shared onward.

Children

Bati is a general-audience fitness app and is not directed at children under 13. It collects no personal data from anyone, of any age.

Your rights

Because Bati holds no data about you, there is nothing for us to export, correct or delete on your behalf. You hold all of it: either backup row in Settings hands you the whole database as a file, and uninstalling the app erases every record it made on the phone. Copies you asked for stay where you put them: your phone’s own backup, files you saved, and the sync folder on your server, each of which you delete there.

Changes

If this policy changes, the updated version will be published at this URL with a new date. The one change that would matter is a new network destination. The second one arrived on 20 September 2026 and the third on 25 September 2026, each with its own section above, in plain words rather than folded into a list, which is how any other would arrive too.

Contact

Questions about this policy, and anything else (a bug, an idea, a feature you wish existed): contact@getbati.app

Politique de confidentialité de Bati

Dernière mise à jour : 4 octobre 2026

Bati est une application d’entraînement hors ligne d’abord. Pas de compte, pas de serveur à nous, pas d’analytics. Cette page existe parce que les deux stores exigent une URL de politique de confidentialité, et parce que la version courte mérite d’être dite simplement :

Bati ne collecte rien sur vous. Rien de ce que vous enregistrez dans l’application ne quitte votre téléphone, sauf si vous l’envoyez vous-même. Trois exceptions, toutes désactivées par défaut : la carte derrière une sortie, qui dit à un hôte de cartes à peu près où vous allez ; une question quotidienne à GitHub sur une version plus récente ; et la synchronisation des appareils, qui envoie votre historique chiffré sur le téléphone vers un serveur que vous désignez, où il ne peut pas être lu.

Une phrase de tout cela était plus courte avant. Jusqu’aux sorties, l’application ne faisait aucune requête réseau, et c’était garanti par le refus de la permission INTERNET elle-même. Dessiner une carte derrière une marche demande la carte : la permission est donc désormais dans la compilation, et la version honnête de la promesse est une ligne plus longue plutôt que disparue : la carte est un réglage, désactivé tant que vous ne l’activez pas, et jusque-là l’application ne fait toujours aucune requête. Un second interrupteur l’a rejointe le 20 septembre 2026, pour les copies qu’aucun store ne met à jour, et un troisième le 25 septembre 2026, pour qui a plus d’un appareil. Voir « La carte, et l’hôte unique », « La vérification de version, et le second hôte » et « Synchroniser vos appareils, et l’hôte que vous choisissez » plus bas.

Ce qui est stocké, et où

Tout ce que Bati enregistre (séances, séries, répétitions, temps de gainage, quêtes, aventures, village, hauts faits, flamme, serment, avatar, réglages, les photos que vous donnez à un exercice ou une quête, et les points GPS et relevés de pression d’une sortie) est écrit dans une base SQLite située dans le stockage privé de l’application, sur votre appareil.

Les sauvegardes que vous faites

Les réglages proposent trois façons d’écrire cette base dans un fichier. Enregistrer un fichier ouvre l’écran « Enregistrer sous » d’Android : vous nommez le fichier et choisissez où il va (cet appareil, Téléchargements, une application de nuage installée, une clé USB). Un petit lien à côté, Envoyer à une autre app, remet plutôt le fichier au partage de votre système. Sauvegarde automatique l’écrit dans un dossier que vous choisissez une fois, puis de nouveau toute seule une fois par jour et avant chaque mise à jour de l’application. Ce que ces fichiers deviennent ensuite ne dépend que de vous : l’application ne les envoie nulle part, et n’en a aucun moyen.

Ce que Bati ne fait jamais

La carte, et l’hôte unique

Une sortie (marche, course, vélo) enregistre le terrain parcouru pour pouvoir vous dire la distance. Ces points restent dans la base de données de votre téléphone, comme le reste.

Les dessiner sur une carte demande une carte, et la carte est désactivée par défaut. Une installation neuve dessine le trajet comme un trait sur le fond sombre de l’application, et ne demande rien. Les réglages ont un interrupteur pour la carte ; activez-le et Bati demande à tiles.openfreemap.org des tuiles, les carrés d’image qui composent une carte, et c’est la première des trois destinations réseau de l’application. OpenFreeMap sert des données OpenStreetMap, gratuitement, sans clé et sans inscription.

La vérification de version, et le second hôte

F-Droid et le Play Store remarquent tous les deux la sortie d’une nouvelle version et vous le disent. Une copie installée à la main depuis un APK n’a personne pour l’en informer, et peut rester un an en arrière sans le savoir. Les réglages ont donc un second interrupteur, Chercher les mises à jour, lui aussi désactivé par défaut.

Activé, Bati demande une fois par jour à api.github.com si une version plus récente est parue, et pose une carte sur l’accueil quand la réponse est oui.

Synchroniser vos appareils, et l’hôte que vous choisissez

Un téléphone et une tablette, ou un ancien téléphone et un nouveau, peuvent partager un même héros. Les réglages ont un troisième interrupteur, Synchroniser mes appareils, désactivé par défaut. Il ne fonctionne qu’avec Chiffrer mes sauvegardes activé, et refuse de démarrer sinon.

Activé, vous choisissez un serveur à vous qui parle WebDAV. Avec Nextcloud, vous saisissez son adresse et vous vous connectez sur la page de ce serveur, dans votre navigateur : Bati ne voit jamais votre mot de passe Nextcloud, le serveur lui remet un mot de passe d’application distinct, révocable à tout moment (Nextcloud, Paramètres, Sécurité). Avec tout autre serveur WebDAV (kDrive, Koofr, un NAS, ou Round Sync qui sert un autre cloud depuis votre téléphone), vous saisissez son adresse, un identifiant et un mot de passe d’application. Ensuite, à chaque ouverture de l’application et quand vous le demandez, chacun de vos appareils envoie son historique complet dans un dossier Bati de ce serveur, et lit celui des autres pour vous dire si l’un d’eux est en avance.

Permissions, et pourquoi

Position, précise et approximative (facultatif). Utilisée pour une seule chose : mesurer le terrain parcouru pendant une sortie. L’application lit votre position tant que la sortie dure et s’arrête à la fin de la séance. Les points sont écrits dans la base locale, et ne quittent le téléphone que dans une synchronisation chiffrée ou une sauvegarde que vous faites. Refusez-la, ou ne partez jamais en sortie, et le reste de l’application ne change pas. Android exige que la permission approximative soit demandée avec la précise ; seule la précise est réellement lue, parce qu’une position approximative ne mesure pas une course.

Pression de l’air (sans permission). Pendant une sortie, sur un téléphone équipé d’un baromètre, l’application lit la pression de l’air pour mesurer le dénivelé gravi, plus finement que l’altitude GPS. Les relevés sont stockés avec les points de la sortie et les suivent : dans vos sauvegardes et une synchronisation chiffrée, nulle part ailleurs. Android ne demande aucune permission pour ce capteur, c’est donc écrit ici.

Fonctionner écran éteint (Android). Une sortie maintient un service de premier plan et un wake lock pour que la trace ne s’arrête pas quand le téléphone s’endort dans une poche. C’est à cela que sert la notification permanente pendant une sortie : une application qui suit votre position doit le dire, à l’écran, du début à la fin.

Notifications (facultatif). Demandées quand vous activez le rappel d’entraînement dans les réglages, et utilisées pour la notification de sortie ci-dessus. Les rappels sont programmés sur votre téléphone par Android lui-même, les jours et à l’heure que vous avez choisis : il n’y a aucune notification push, donc aucun serveur ne connaît votre appareil. Pour afficher un rappel à l’heure et agir sur ses deux boutons, le téléphone garde un petit journal des dix derniers jours où un rappel a sonné (le jour, l’heure, ce qu’il affichait, et si vous l’avez touché, repoussé ou mis en pause). Il reste dans le stockage propre de l’application, n’est envoyé nulle part et n’entre pas dans vos sauvegardes. Rien n’en quitte le téléphone, sauf à l’intérieur d’un mail de rapport de bug que vous lisez et envoyez vous-même : si le rappel est activé, et quatre nombres.

Démarrage du téléphone (Android). Un redémarrage efface toutes les alarmes programmées : Bati demande donc à être prévenu quand le téléphone a démarré, pour reprogrammer le prochain rappel. Rien d’autre ne tourne à ce moment-là, et rien du tout si le rappel est coupé.

Internet. Pour la carte, la vérification de version et la synchronisation des appareils, chacune seulement tant que son interrupteur est activé dans les réglages. Ce que chaque demande révèle est dans sa section plus haut.

État du réseau. Si vous êtes connecté, et par quel type de lien. La bibliothèque de carte le demande pour cesser de réclamer des tuiles quand il n’y a rien pour les transporter. Elle n’en tire aucune identité, aucun nom de réseau et aucune position, et cela n’a de sens que grâce à la permission ci-dessus. Bati refuse délibérément la permission Wi-Fi voisine, qui nommerait les réseaux autour de vous : un nom de réseau est une position par un autre chemin.

Photos (facultatif). Si vous choisissez une photo comme avatar, l’application lit cette image dans votre galerie et garde un lien vers elle sur votre appareil ; l’image elle-même n’est jamais copiée ni envoyée. Si vous donnez une photo à un exercice ou une quête que vous avez créés, l’application la réduit et la stocke dans la base comme le reste : elle voyage donc avec vos sauvegardes et une synchronisation chiffrée, et nulle part ailleurs. Vous pouvez refuser : l’application fonctionne normalement avec les images intégrées.

Widget d’écran d’accueil (Android, facultatif). Le widget de flamme lit votre régularité dans la même base locale.

Biométrie (facultatif). Pour une seule chose : réafficher vos douze mots de récupération de sauvegarde, derrière votre empreinte. Android fait la vérification ; Bati ne voit jamais votre empreinte, seulement si elle correspond. Rien d’autre dans l’application ne la demande, et chaque sauvegarde s’ouvre avec son mot de passe sans elle.

Rapports de crash

En cas de plantage, Bati écrit l’erreur et sa trace uniquement sur votre appareil. Quand une fonction échoue sans plantage (une sauvegarde impossible à écrire, par exemple), le message d’erreur est conservé de la même façon ; ce message peut contenir le nom d’un dossier ou d’un fichier que vous avez choisi, ou l’adresse de votre serveur de synchronisation.

Rien n’est transmis automatiquement. Si vous souhaitez aider à corriger un bug, les Réglages proposent « Signaler un bug », qui ouvre votre propre application e-mail avec le rapport pré-rempli. Vous pouvez le lire, le modifier ou le supprimer avant envoi, et si vous ne l’envoyez jamais, il ne quitte jamais votre téléphone. Les rapports envoyés servent uniquement à corriger le bug et ne sont transmis à personne.

Enfants

Bati est une application de sport tout public, non destinée aux enfants de moins de 13 ans. Elle ne collecte aucune donnée personnelle, quel que soit l’âge.

Vos droits

Comme Bati ne détient aucune donnée vous concernant, nous n’avons rien à exporter, corriger ou supprimer pour vous. Vous détenez l’intégralité : l’une ou l’autre ligne de sauvegarde, dans les réglages, vous remet la base entière sous forme de fichier, et désinstaller l’application efface du téléphone chaque enregistrement qu’elle a produit. Les copies que vous avez demandées restent où vous les avez mises : la sauvegarde de votre téléphone, les fichiers enregistrés, et le dossier de synchronisation sur votre serveur, que vous supprimez chacun à sa place.

Modifications

Si cette politique change, la version à jour sera publiée à cette URL avec une nouvelle date. Le seul changement qui compterait serait une nouvelle destination réseau. La deuxième est arrivée le 20 septembre 2026 et la troisième le 25 septembre 2026, chacune avec sa propre section plus haut, en toutes lettres plutôt que glissée dans une liste, et toute autre arriverait de la même façon.

Contact

Questions sur cette politique, et tout le reste (un bug, une idée, une fonctionnalité qui vous manque) : contact@getbati.app