1. О чём этот документ
Документ описывает приложение BodyPace: аккаунт, дневник тренировок, замеры тела и доступ, который вы открываете тренеру. Ничего другого в приложении сегодня нет.
Разделы, о которых мы говорим как о планах — питание, привычки, здоровье, — не существуют ни в интерфейсе, ни в базе данных. Мы намеренно не описываем их здесь заранее: политика, обещающая обработку того, чего нет, ничего не защищает. Когда раздел появится, этот документ изменится раньше, чем он, и вы увидите новую версию и новую дату.
Сайт bodypace.app описан отдельно — в «Политике конфиденциальности сайта». Сайт ничего у вас не принимает и к записям в приложении отношения не имеет.
2. Что мы храним
Только то, без чего карта не работает. Ниже — полный список; ничего сверх него приложение не собирает.
Аккаунт. Адрес почты, имя, которое вы указали при регистрации, и отпечаток пароля. Сам пароль мы не храним и не можем его восстановить или показать — только сравнить с тем, что вы ввели. Если вы входите через Google или Apple, пароля у нас нет вовсе: вместо него хранится идентификатор, который эти сервисы выдают именно для входа в BodyPace. Он не даёт доступа к вашей почте или к учётной записи у них.
Подтверждение и вход. Отметка о том, что адрес подтверждён, счётчик неудачных попыток входа, временная блокировка после серии неудач, а также отпечатки шестизначных кодов подтверждения и восстановления. Коды живут пятнадцать минут и хранятся не в открытом виде.
Сессии. Отпечатки токенов, которыми приложение подтверждает, что это по-прежнему вы. Сами токены на сервере не хранятся. Каждое обновление сессии выпускает новый токен и гасит старый — если старый вдруг предъявят снова, вся цепочка сессий закрывается.
Тренировки. Программы и шаблоны занятий, планы на дни, проведённые занятия и подходы: вес, повторы, длительность, расстояние и отметка «легко» или «тяжело». Плюс ваши заметки к занятию, к упражнению и к отдельному подходу и время начала и окончания занятия.
Замеры тела. Рост, вес, возраст, пол, уровень активности и цель — то, что вы вводите сами. Рядом приложение считает и хранит суточную норму калорий: формулу, базовый обмен, коэффициент активности и итоговое число. Это арифметика по вашим же цифрам, а не медицинское заключение.
Доступ тренера. Кому открыт доступ, какие области открыты, в каком он состоянии, даты приглашения, принятия, отказа и отзыва, версия согласия, которое вы подтвердили, и причина отказа, если тренер её указал.
Техническое. Даты создания и последнего изменения каждой записи, отметка о том, что вы прошли первое знакомство с приложением, и обычные журналы сервера — время обращения и результат. Журналы нужны, чтобы находить сбои и замечать подбор паролей.
3. Зачем это нужно
Аккаунт и подтверждение адреса нужны, чтобы записи принадлежали вам и никому другому, и чтобы вы могли вернуть доступ, если забудете пароль. Счётчик неудачных попыток и блокировка защищают вас от подбора пароля.
Тренировки и замеры — это и есть содержание приложения. Мы храним их, чтобы вы видели свою историю, а тренер — то, что вы ему открыли. Норма калорий считается из ваших же цифр и показывается рядом с ними.
Данные о доступе тренера нужны, чтобы вы в любой момент видели, кому и что открыто, и могли это закрыть. Версия согласия хранится, чтобы через год можно было посмотреть, на что именно вы соглашались, а не вспоминать.
Журналы сервера нужны для работы и безопасности: найти сбой, заметить перебор паролей. Мы не используем их, чтобы составить портрет пользователя.
4. Чего мы не делаем
Этот список — не вежливая формулировка, а перечень действий, которых в приложении нет ни в коде, ни в планах на ближайшие версии.
5. Что видит тренер
Ничего, пока вы не откроете доступ. Тренер не может найти вашу карту, заглянуть в неё или узнать, что она существует, — пока вы не примете его приглашение или он не примет ваше.
Когда доступ открыт, тренер видит только те области, которые в него входят: тренировки и, если вы оставили эту область открытой, замеры тела. Ваши заметки видны тренеру только те, которые вы пометили как видимые ему.
Тренер может составлять и менять ваши будущие программы и занятия и писать заметки — они появляются в вашей карте с его именем и датой. Прошедшие записи тренер изменить не может: факт пишете вы.
Доступ отзывается в один шаг, без объяснения причин. После отзыва тренер перестаёт видеть новые записи. История остаётся у вас целиком — включая заметки тренера, с его авторством.
6. Кто ещё участвует
Чтобы приложение работало, часть задач выполняют внешние сервисы. Полный список — ниже. Каждый из них получает ровно то, что нужно для своей задачи, и ничего больше.
Никаких других сервисов в приложении нет: ни аналитики, ни рекламных сетей, ни систем сбора отчётов о сбоях.
7. Что остаётся на вашем устройстве
Дневник пишется сначала на устройстве и только потом уходит на сервер. Так сделано намеренно: подход записывают в зале, где связи может не быть.
Поэтому на телефоне лежит локальная копия ваших записей, а ключи сессии — в защищённом хранилище системы (Keychain на iOS, Keystore на Android). Мы не имеем к этому хранилищу доступа: им управляет операционная система.
Если вы удалите приложение, локальная копия и ключи сессии исчезнут вместе с ним. Записи на сервере при этом останутся — чтобы удалить и их, нужно удалить аккаунт.
8. Сколько мы храним
Записи хранятся, пока существует аккаунт. Дневник тем и полезен, что помнит: удалять историю по расписанию было бы вредно именно для того, ради чего люди её ведут.
Коды подтверждения и восстановления живут пятнадцать минут и гасятся при первом использовании. Сессия обновляется, пока вы пользуетесь приложением, и закрывается при выходе.
Когда вы удаляете аккаунт, мы удаляем ваши записи. Копии могут какое-то время оставаться в резервных копиях базы — это свойство любых резервных копий; они перезаписываются по мере ротации и не используются ни для чего, кроме восстановления после сбоя.
Заметки, которые тренер написал в вашей карте, при удалении аккаунта удаляются вместе с картой. У тренера они не остаются.
9. Ваши права
Данные ваши. Вы вправе узнать, что о вас хранится, получить это в читаемом виде, исправить неточное и удалить всё вместе с аккаунтом.
Пока в приложении нет кнопок для выгрузки и удаления — мы делаем это по письму. Напишите на privacy@bodypace.app с адреса, на который зарегистрирован аккаунт, и скажите, что нужно. Мы отвечаем в течение тридцати дней, обычно быстрее.
Отозвать доступ тренера можно самостоятельно и мгновенно — на экране «Мой тренер», без письма и без объяснения причин.
10. Как мы защищаем
Пароли хранятся в виде отпечатка, полученного алгоритмом Argon2id — современным и рассчитанным именно на пароли. Восстановить из него исходный пароль нельзя.
Коды подтверждения и токены сессий тоже хранятся отпечатками, а не в открытом виде: база, попавшая в чужие руки, не должна отдавать живые доступы. Обмен приложения с сервером идёт по защищённому соединению.
Сессии устроены так, чтобы кража была заметной: каждое обновление выпускает новый токен и гасит предыдущий, и повторное предъявление погашенного закрывает всю цепочку.
Ни одна из этих мер не делает систему неуязвимой, и мы этого не утверждаем. Если утечка всё же случится, мы сообщим тем, кого она затронула, и опишем, что произошло.
11. Возраст
Приложение рассчитано на людей с шестнадцати лет. Мы не проверяем возраст при регистрации — сделать это надёжно нельзя, — но и не рассчитываем на детей: в приложении нет ни детского содержания, ни механизма родительского согласия.
Если выяснится, что аккаунт завёл человек младше шестнадцати, напишите нам, и мы удалим аккаунт и записи.
12. Изменения и контакты
Документ будет меняться: приложение растёт, и каждый новый раздел меняет то, что мы храним. Правило простое — документ меняется раньше функции, а не после неё.
У каждой версии своя дата в заголовке. Предыдущие версии остаются доступными по своим адресам, чтобы можно было посмотреть, что действовало, когда вы соглашались.
Оператор ещё не зарегистрирован: юридического лица у проекта нет. Как только оно появится, его наименование и адрес будут указаны здесь, и документ получит новую версию.
Вопросы, запросы на выгрузку и удаление, жалобы — privacy@bodypace.app. Мы отвечаем письмом.