Техническая документация
Программа для ЭВМ «ХэбитМир», версия 2.0.1 (сборка 166). Версия документа — 1.2. Дата редакции — 25 сентября 2026 г.
Документ соответствует требованиям подпунктов «г» и «д» пункта 5 Правил формирования и ведения единого реестра российских программ для ЭВМ и баз данных, утверждённых Постановлением Правительства Российской Федерации от 16 ноября 2015 г. № 1236.
1. Общие сведения
1.1. Наименование
Полное: Программа для ЭВМ «ХэбитМир».
Краткое: ХэбитМир.
Латинская транслитерация: HabitMir.
1.2. Назначение
«ХэбитМир» — мобильное приложение для отслеживания пользовательских привычек с визуальной игровой механикой. Помогает пользователям формировать здоровые привычки в области спорта, продуктивности, ментального здоровья, творчества и обучения через регулярную фиксацию выполненных действий и визуальное вознаграждение в виде развивающегося миниатюрного мира.
1.3. Целевая аудитория
Пользователи мобильных устройств в возрасте 18–34 лет, ориентированные на личностное развитие. Языки интерфейса — русский (основной) и английский; язык переключается в профиле.
1.4. Системные требования
| Параметр | Значение |
|---|---|
| Операционная система | Android 7.0 (API 24) и выше; целевой уровень API 36 |
| Графика | графический ускоритель с поддержкой Vulkan или OpenGL ES (движок Flutter Impeller) — для отрисовки 3D-острова |
| Объём свободной памяти | не менее 300 МБ |
| Размер дистрибутива | около 100 МБ |
| Доступ к интернету | требуется для синхронизации (offline-first) |
| Доступ к уведомлениям | опционально, для напоминаний |
| Точные будильники | опционально, для напоминаний в заданную минуту |
1.5. Канал распространения
Приложение распространяется через российский магазин приложений RuStore (rustore.ru). Установка осуществляется конечным пользователем самостоятельно.
1.6. Класс программного обеспечения и коды ОКПД 2
В соответствии с классификатором программ для ЭВМ и баз данных, утверждённым Приказом Министерства цифрового развития, связи и массовых коммуникаций Российской Федерации от 22.09.2020 № 486 (в действующей редакции от 04.12.2023, с изменениями приказами № 393 от 26.04.2022, № 974 от 22.12.2022 и № 1041 от 04.12.2023; зарегистрирован в Минюсте РФ 29.10.2020, № 60646), программа для ЭВМ «ХэбитМир» относится к классу:
- Раздел 06: Офисное программное обеспечение
- Класс 06.05: Органайзеры
Описание класса согласно приказу: программное обеспечение, которое должно позволять организовывать информацию о личных контактах, задачах и событиях пользователя. Указанному определению соответствует основная функциональность ХэбитМир — организация и трекинг пользовательских привычек как задач с системой напоминаний и фиксации выполнений (событий). Игровая механика развития «Мира» является мотивационным слоем поверх трекинга привычек и не относится к основной функциональности.
Дополнительно программа относится к классу:
- Раздел 05: Прикладное программное обеспечение
- Класс 05.03: Игры и развлечения
Обоснование выбора класса 05.03. Помимо трекинга привычек, программа реализует самостоятельную интерактивную развлекательную составляющую — личный миниатюрный остров пользователя в трёхмерной графике реального времени, прогрессирующий через 27 объектов привычек с шестью стадиями развития каждого, со сменой времени суток, анимациями и восемью визуальными обликами острова. Эта составляющая обладает признаками программного обеспечения класса «Игры и развлечения»: наличие сюжетной игровой среды, прогрессии персонажа/мира, визуальной динамики и игровой мотивации, не связанной напрямую с задачами делового или офисного характера. Поскольку игровая механика реализована как полноценный самостоятельный экран приложения и предоставляет пользователю развлекательный пользовательский опыт, программа правомерно классифицируется и по разделу 05 «Прикладное программное обеспечение», классу 05.03 «Игры и развлечения» — в качестве дополнительного класса наряду с основным классом 06.05 «Органайзеры».
Соответствующие коды Общероссийского классификатора продукции по видам экономической деятельности (ОКПД 2):
| Код ОКПД 2 | Наименование |
|---|---|
| 62.01.29 | Оригиналы программного обеспечения прочего |
2. Функциональные характеристики
2.1. Основные функциональные возможности
Управление привычками. Создание привычек с настройкой расписания, целевых дней недели и напоминаний; выбор из 27 видов привычек в 5 категориях (здоровье, продуктивность, осознанность, творчество, обучение); три типа отметки — простая отметка, счётчик с целью, таймер с экраном фокуса; редактирование, переименование, архивирование и возврат из архива; группировка по категориям.
Ежедневный трекинг. Отметка выполнения привычки в один тап; визуальное подтверждение завершения; поддержка частичного выполнения (счётчик) и пропусков; отметка с виджета на домашнем экране Android без открытия приложения; работа без сети с последующей синхронизацией.
Игровая механика «Мир». Личный остров пользователя в трёхмерной графике (движок flutter_scene, Flutter GPU): 27 объектов привычек и 2 декорации; каждый объект растёт через 6 стадий (силуэт, росток, растёт, детализированный, полный, золотой) по порогам 0, 3, 7, 21, 30 и 66 дней лучшей серии; смена времени суток, анимации объектов, масштабирование и перемещение камеры жестами; 8 визуальных обликов острова; настройка качества отрисовки (авто, красиво, экономно).
Серии и мотивация (streaks). Подсчёт текущей и максимальной серии выполнения; визуализация серий и графиков прогресса; заморозка серии на время пропуска; стадия объекта считается по лучшей серии, поэтому пропуск не откатывает остров.
Уведомления. Локальные напоминания в точное время с учётом дней недели и тихих часов (без интернета); серверные push-уведомления через RuStore Push о достижениях, риске прервать серию и сводках; раздел «Входящие».
Статистика и аналитика. Календарный heatmap по выполнению; графики по дням недели; статистика по каждой привычке отдельно; общая динамика выполнения за период; экспорт в CSV.
Дневник. Записи за день в редакторе с форматированием текста; привычка категории «Дневник» отмечается записью.
Виджет и быстрые действия. Виджет домашнего экрана Android 4×2 с привычками на сегодня и отметкой прямо с виджета; ярлыки приложения «Сегодня», «Дневник», «Мой Мир».
Поделиться. Карточки-изображения 1080×1350 (шаблоны «Мир», «Карта дней», «Путь») для отправки через системное меню.
Достижения и внутренняя валюта. Зал достижений (архив выращенных привычек); кристаллы — ежедневный бонус, покупка пакетами, трата на заморозки серии и переименование привычек.
Аутентификация. Работа без входа (гостевой режим, offline-first); вход по email и паролю, через VK ID и Яндекс ID — для переноса прогресса между устройствами и восстановления после переустановки.
Подписка и монетизация. Базовый функционал бесплатно; премиум-подписка 149 ₽/мес с пробным периодом 7 дней; lifetime-доступ 1 990 ₽ единоразово; пакеты кристаллов; биллинг через нативную систему RuStore Pay (СБП, СберPay, T-Pay, Mir Pay). Лимит бесплатной версии — 3 активные привычки.
2.2. Ограничения функциональности
Приложение не использует данные геолокации; не отправляет SMS и не совершает звонки; не имеет доступа к контактам, календарю и фотогалерее без явного разрешения; не интегрируется с социальными сетями для публикации без согласия пользователя; не использует рекламный идентификатор устройства (AD_ID) и не показывает рекламу. Разрешение на установку пакетов используется только сборкой для RuStore — для обновления самого приложения через RuStore.
3. Архитектурное описание
3.1. Общая схема
«ХэбитМир» построен по архитектуре client-server с микросервисным разделением серверной части. Клиентское приложение реализует offline-first подход: данные хранятся локально, синхронизация с сервером происходит при наличии соединения и не блокирует UX.
3.2. Клиентская часть
Платформа: Flutter 3.47 (Dart ^3.11.4), движок Impeller. Целевая ОС: Android 7.0+ (minSdk 24, targetSdk 36). Архитектурный паттерн: feature-first + слоистая Clean-архитектура. Каталог lib/src/core/ разделён на domain (модели и контракты репозиториев), infrastructure (Hive-репозитории, Dio API-клиенты, offline sync queue, telemetry) и application (центральные Riverpod-провайдеры). Каталог lib/src/features/ содержит 18 функциональных модулей: auth, billing, habits, hall, inbox, journal (дневник), notifications, onboarding, paywall, profile, sharing, shop, statistics, today, updates, widgets, world и локализация l10n — каждый со своей presentation/; кросс-фичевое состояние идёт через core.
| Слой | Технология | Назначение |
|---|---|---|
| UI | Flutter Widgets | Отрисовка экранов |
| 3D-графика | flutter_scene, vector_math (Flutter GPU) | Отрисовка острова, объектов и эффектов |
| Векторная графика | flutter_svg | Карточки «Поделиться» |
| Текстовый редактор | flutter_quill | Редактор дневника |
| State Management | flutter_riverpod | Реактивное управление состоянием |
| Локальное хранилище | Hive / hive_flutter | Хранение данных на устройстве |
| Сеть | Dio | HTTP-клиент |
| Маршрутизация | go_router | Декларативная маршрутизация |
| Биллинг | flutter_rustore_pay | Интеграция с RuStore Pay |
| Push-уведомления | flutter_rustore_push | Push через RuStore |
| Обновления и отзывы | flutter_rustore_update, flutter_rustore_review, in_app_review | Обновление из RuStore; запрос отзыва (по сборке магазина) |
| Виджет домашнего экрана | home_widget | Виджет 4×2 с отметкой привычек |
| Поделиться | share_plus | Системное меню отправки |
| Локальные уведомления | flutter_local_notifications | Напоминания на устройстве |
| Аналитика | appmetrica_plugin (Яндекс) | Продуктовая аналитика |
| Мониторинг ошибок | sentry_flutter, sentry_dio, sentry_hive | См. раздел 7.4 |
| Логирование | talker_flutter, talker_dio_logger | Структурированные логи |
| Аутентификация | vkid_flutter_sdk, yandex_auth | Российские SDK провайдеров |
3.3. Серверная часть
Платформа: Node.js + NestJS 11 (TypeScript). Архитектурный стиль: микросервисы в NestJS-монорепозитории (apps/* для сервисов, libs/* для общих библиотек). Транспорт между сервисами: RabbitMQ через @nestjs/microservices.
| Сервис | Назначение |
|---|---|
| gateway | Единая точка входа (HTTP/REST + Swagger): модули auth, users, habits, world, journal, billing, health. Маршрутизация запросов в downstream-сервисы, аутентификация (JWT), rate limiting (@nestjs/throttler), helmet |
| habit | Управление привычками, отметками выполнения, расписанием и сериями (streaks) |
| user | Профили пользователей, кристаллы (внутренняя валюта), email и push-уведомления, серверная валидация платежей RuStore Pay и статус премиум-подписки |
| world | Состояние личного острова: 27 объектов привычек, 6 стадий S0–S5, облики острова |
| journal | Дневник пользователя |
Общие библиотеки: libs/common (DTO, исключения, утилиты), libs/database (MikroORM-сущности и подключение к MongoDB), libs/messaging (RabbitMQ-клиенты, контракты сообщений между сервисами).
Фоновые задачи (Kubernetes CronJob/Job): полуночный пересчёт серий, аудит баланса кристаллов, удаление аккаунтов по запросу пользователя, миграции базы данных, сверка состояния острова.
Хранение: MongoDB (основное), Redis (кэш и очереди задач, ioredis + cache-manager), RabbitMQ (асинхронные сообщения и межсервисный транспорт). ORM: MikroORM (@mikro-orm/mongodb).
3.4. Аутентификация
| Провайдер | Назначение |
|---|---|
| Email + пароль | Основной способ входа |
| VK ID | Вход через VK ID SDK |
| Яндекс ID | Вход через Яндекс ID SDK |
| Гостевой режим | Без ввода данных: анонимная учётная запись на сервере |
После аутентификации сервер выдаёт JWT-токен доступа (15 минут) и refresh-токен (30 дней), привязанные к идентификатору устройства. Запросы к методам аутентификации ограничены по частоте.
3.5. Биллинг
Реализован через нативный SDK flutter_rustore_pay 11.x. На клиенте инициируется покупка через RuStore Pay. HTTP-эндпоинты приёма событий покупки находятся в модуле billing сервиса gateway; серверная валидация подписи и состояния транзакции через RuStore Server API выполняется в модуле billing сервиса user. Сервер — источник истины для статуса премиум-доступа; клиент только кэширует результат. Поддерживаемые способы оплаты: СБП, СберPay, T-Pay, Mir Pay. Отмена автопродления выполняется в приложении; оплаченный период сохраняется.
4. Инструкция по установке и эксплуатации
4.1. Установка
- Открыть RuStore на устройстве Android.
- Найти «ХэбитМир» или перейти по прямой ссылке.
- Нажать «Установить».
- Запустить приложение.
4.2. Первый запуск (тур с Тёпой)
Интерактивный тур с маскотом Тёпой: знакомство, выбор целей, подбор первых привычек, настройка напоминания, запрос разрешения на уведомления, объяснение роста острова, создание первой привычки. Предложение подписки с пробным периодом показывается однократно позднее, не при первом запуске.
4.3. Базовое использование
Главный экран (вкладка «Дом»): мини-остров, список привычек на день с отметкой выполнения, ежедневный бонус; нижняя навигация — «Дом», «Статистика», «Дневник», «Я».
Отметка выполнения: одно касание кнопки.
Просмотр мира: полноэкранный 3D-остров с объектами на текущих стадиях; масштабирование и перемещение жестами, касание объекта открывает его привычку.
Статистика: календарный heatmap, графики, серии (streaks).
Виджет: добавляется из профиля («Виджет на экране») или стандартно через лаунчер.
4.4. Удаление
Стандартное удаление через настройки Android. Локальные данные удаляются. При наличии облачной синхронизации данные сохраняются на сервере. При необходимости удаления данных с сервера, необходимо пройти процедуру удаления во вкладке "Профиль"
5. Жизненный цикл программного обеспечения
5.1. Процесс выпуска обновлений
Разработка в feature-ветках → code review → автоматическое тестирование → сборка релиза → внутреннее тестирование → публикация в RuStore через RuStore Console → пост-релизный мониторинг через Sentry.
Регулярные релизы планируются ежемесячно. Критические исправления — по мере необходимости.
5.2. Регламент исправления ошибок
| Уровень | Описание | Срок реакции | Срок исправления |
|---|---|---|---|
| Критический | Приложение не запускается, потеря данных, отказ биллинга | 4 часа | 24–48 часов |
| Высокий | Существенный функционал недоступен, ошибки у >10% пользователей | 1 рабочий день | 5–7 рабочих дней |
| Средний | Локальные ошибки, не блокирующие основной функционал | 3 рабочих дня | следующий релиз |
| Низкий | Косметические дефекты | 5 рабочих дней | планируется в очередь |
5.3. Техническая поддержка
Каналы: support@habitmir.ru; форма обратной связи внутри приложения; ответы на отзывы в RuStore. Время реакции — 1–3 рабочих дня.
5.4. SLA серверной инфраструктуры
| Параметр | Значение |
|---|---|
| Целевая доступность сервиса | 99,5% (исключая регламентные работы) |
| Время реакции на критический инцидент | 1 час |
| Окно регламентных работ | ночное время МСК с предварительным уведомлением |
6. Информационная безопасность
6.1. Шифрование данных
В транспорте: все взаимодействия между клиентом и сервером — по протоколу HTTPS с TLS 1.2 и выше. Сертификаты выпускаются признанными удостоверяющими центрами.
На устройстве: данные хранятся в изолированной песочнице приложения (Hive, SharedPreferences), недоступной другим приложениям. Резервное копирование Android (Auto Backup) отключено — данные приложения не выгружаются в облачные резервные копии.
На сервере: базы данных размещены в изолированных сегментах сети. Доступ к управляющим интерфейсам ограничен и защищён.
6.2. Защита персональных данных (152-ФЗ)
ООО «ЛИКС» выступает оператором персональных данных в соответствии с Федеральным законом № 152-ФЗ.
Обрабатываемые категории ПДн:
- Идентификационные данные (email)
- Технические данные (идентификатор устройства, тип ОС, версия приложения)
- Платёжные данные (только идентификаторы транзакций — данные карт не хранятся)
Цели обработки: предоставление функциональности приложения; биллинг и управление подпиской; техническая поддержка; анализ использования с согласия пользователя.
Юридические основания: согласие субъекта ПДн, исполнение договора, законные интересы оператора.
Согласие пользователя получается при регистрации или использовании гостевого режима через принятие пользовательского соглашения (/terms) и политики конфиденциальности (/privacy).
6.3. Хранение данных на территории РФ
В соответствии с Федеральным законом № 242-ФЗ и № 152-ФЗ, все персональные данные граждан Российской Федерации хранятся и обрабатываются исключительно на серверах, расположенных на территории Российской Федерации.
Серверная инфраструктура развёрнута на собственном оборудовании правообладателя на территории РФ: кластер Kubernetes, базы данных MongoDB и Redis, брокер RabbitMQ — self-hosted.
6.4. Работа с уязвимостями
- Регулярное обновление зависимостей до версий с исправлениями безопасности
- Автоматический сканер уязвимостей (npm audit, dart pub outdated)
- Приём уведомлений об уязвимостях по адресу support@habitmir.ru
- При выявлении критической уязвимости — исправление в приоритетном порядке
6.5. Защита от мошенничества
- Серверная валидация платежей RuStore — клиент не может «подделать» подписку
- Ограничение частоты запросов (rate limiting) на уровне API Gateway
- Логирование подозрительных активностей через Winston и Sentry
7. Технологический стек и зависимости
7.1. Клиентская часть (Flutter)
Базовый стек: flutter_riverpod 3.4.2; hive 2.2.3 + hive_flutter 1.1.0; dio 5.11.0; go_router 18.0.0; flutter_scene 0.23.0 + vector_math 2.4.2 (3D-остров); flutter_svg 2.3.0; flutter_quill 11.5.1.
Системные: flutter_local_notifications 22.3.0, permission_handler 13.0.1, connectivity_plus 7.3.1, shared_preferences 2.5.5, path_provider 2.1.6, package_info_plus 10.2.1, device_info_plus 13.2.0, url_launcher 6.3.2, app_settings 9.0.0, intl 0.20.3, timezone 0.11.1, flutter_timezone 5.1.0, uuid 4.6.0, crypto 3.0.7, collection 1.19.1, home_widget 0.9.3, share_plus 13.3.0, in_app_review 2.0.12 (сборка для Google Play), cupertino_icons 1.0.9, flutter_skill 0.9.36 (только отладочные сборки — автоматизация тестирования).
Российские SDK (7 шт.):
flutter_rustore_pay11.1.0 — биллинг через RuStore Payflutter_rustore_push7.2.0 — push-уведомления через RuStoreflutter_rustore_review10.5.1 — запрос отзывов через RuStoreflutter_rustore_update10.5.1 — обновление приложения через RuStorevkid_flutter_sdk1.0.3 — аутентификация через VK IDyandex_auth1.3.1 — аутентификация через Яндекс IDappmetrica_plugin4.1.0 — продуктовая аналитика (Яндекс)
Мониторинг и логирование: sentry_flutter 9.28.0, sentry_dio 9.28.0, sentry_hive 9.28.0 (см. 7.4); talker_flutter 5.1.20, talker_logger 5.1.20, talker_dio_logger 5.1.20.
Все компоненты — open-source с открытыми лицензиями (MIT, BSD-3-Clause, Apache-2.0), либо российские SDK.
7.2. Серверная часть (Node.js / NestJS)
Фреймворк NestJS (всё MIT): @nestjs/core 11.1.19, @nestjs/common 11.1.19, @nestjs/config 4.0.4, @nestjs/platform-express 11.1.19, @nestjs/microservices 11.1.19, @nestjs/cache-manager 3.1.0, @nestjs/jwt 11.0.2, @nestjs/passport 11.0.5, @nestjs/schedule 6.1.3, @nestjs/swagger 11.3.2, @nestjs/terminus 11.1.1, @nestjs/throttler 6.5.0.
Хранение данных: @mikro-orm/core 6.6.13, @mikro-orm/mongodb 6.6.13, @mikro-orm/nestjs 6.1.2; mongodb 7.2.0 (см. 7.3); ioredis 5.10.1, cache-manager 6.4.3.
Очереди: amqp-connection-manager 4.1.15, amqplib 0.10.9 (RabbitMQ).
Безопасность: passport 0.7.0, passport-jwt 4.0.1, jose 6.2.2; argon2 0.44.0 (хеширование паролей); helmet 8.1.0; class-validator 0.14.4, class-transformer 0.5.1.
Утилиты: date-fns 4.1.0, date-fns-tz 3.2.0, nodemailer 8.0.5, winston 3.19.0 + nest-winston 1.10.2, prom-client 15.1.3, reflect-metadata 0.2.2, rxjs 7.8.2.
Мониторинг: @sentry/node 10.49.0 (см. 7.4).
Все production-зависимости — open-source (MIT, Apache-2.0, BSD-3-Clause).
7.3. Особое примечание о MongoDB
Используется MongoDB Community Edition (драйвер mongodb 7.2.0 + MikroORM).
- MongoDB не входит в перечень запрещённых СУБД Минцифры (приложение к ПП №1236, где указаны MS SQL Server, Oracle Database, Oracle MySQL Standard/Enterprise, IBM DB2, EnterpriseDB, InterSystems Caché, SAP HANA).
- Community-версия под лицензией SSPL — open-source.
- Self-hosted на собственных серверах правообладателя на территории РФ. MongoDB Atlas (SaaS) не используется.
- Все данные пользователей хранятся на территории РФ (152-ФЗ).
- Архитектура backend через MikroORM абстрагирует слой данных — миграция на российскую СУБД из реестра (Postgres Pro, Tantor PostgreSQL) технически возможна без переписывания бизнес-логики.
7.4. Особое примечание о Sentry
Используется Sentry (@sentry/node 10.49.0 на сервере, sentry_flutter 9.28.0 и интеграции на клиенте) для технического мониторинга ошибок.
Развёртывание: self-hosted на территории РФ. Sentry развёрнут в режиме self-hosted на собственных серверах правообладателя (инфраструктура на территории Российской Федерации) с использованием официального open-source-дистрибутива Sentry (лицензия FSL-1.1-Apache-2.0/BSL, переходящая в Apache-2.0 после двух лет). Облачный сервис sentry.io не используется: все события об ошибках, отправляемые клиентом и серверными микросервисами, поступают на собственный экземпляр Sentry в РФ и не покидают территорию Российской Федерации. Связь с сервером Sentry организована по HTTPS (TLS 1.2+) в пределах инфраструктуры правообладателя.
Условия использования, обеспечивающие соответствие требованиям защиты ПДн:
- Все данные мониторинга обрабатываются и хранятся исключительно на территории РФ — на собственном self-hosted-экземпляре Sentry; трансграничная передача данных отсутствует.
- В Sentry не передаются персональные данные пользователей — только технические данные ошибок (стек вызовов, версия приложения, тип устройства, временные метки).
- Используется встроенный механизм Data Scrubbing для автоматического удаления случайных данных, идентифицирующих пользователя.
- Идентификаторы пользователей в отчётах об ошибках обезличены (используются хешированные ID).
- Sentry применяется исключительно для целей выявления и устранения технических неисправностей программного обеспечения.
7.5. Инфраструктура
| Компонент | Назначение | Происхождение |
|---|---|---|
| Серверная инфраструктура | Хостинг backend и БД | Собственное оборудование правообладателя на территории РФ |
| Linux | ОС серверов | Open-source |
| Docker | Контейнеризация | Apache-2.0 |
| Kubernetes | Оркестрация контейнеров | Apache-2.0 |
| MongoDB Community 7.x | Основная БД (NoSQL) | SSPL, self-hosted в РФ |
| Redis 7 | Кэш и очереди задач | BSD-3-Clause, self-hosted в РФ |
| RabbitMQ 3.13 | Брокер сообщений | MPL-2.0, self-hosted в РФ |
7.6. Декларация об отсутствии запрещённых компонентов
В составе программы для ЭВМ «ХэбитМир» не используются компоненты из перечня запрещённых (приложение к ПП №1236):
- Запрещённые СУБД: MS Access, MS SQL Server, Oracle Database, Oracle MySQL Standard/Enterprise/Cluster Carrier Grade Edition, IBM DB2, EnterpriseDB, InterSystems Caché, SAP HANA — не используются
- Запрещённые серверы приложений: Adobe ColdFusion, Oracle WebLogic, RedHat JBoss Enterprise — не используются
- Запрещённые платформы: SAP, AWS как платформа — не используются
Все используемые компоненты — open-source с разрешительными лицензиями (MIT, Apache-2.0, BSD-3-Clause, SSPL для MongoDB Community), либо российскими SDK от Яндекс, VK и RuStore.
8. Средства хранения исходного кода и средства компиляции
Настоящий раздел описывает технические средства, используемые для хранения исходного текста и объектного кода программы для ЭВМ «ХэбитМир», а также технические средства компиляции исходного текста в объектный код, в соответствии с подпунктом «г» пункта 5 Правил формирования и ведения единого реестра российских программ для ЭВМ и баз данных (Постановление Правительства Российской Федерации от 16 ноября 2015 г. № 1236).
8.1. Система контроля версий
Хранение и версионирование исходного кода программы для ЭВМ «ХэбитМир» осуществляется в системе контроля версий Git (open-source, лицензия GPLv2).
8.2. Хост-репозитория
Репозитории исходного кода размещены на российском Git-хостинге GitFlic (gitflic.ru). Оператор сервиса — российская компания ООО «РЕАКСОФТ», резидент инновационного центра «Сколково». Серверная инфраструктура GitFlic расположена на территории Российской Федерации.
8.3. Структура репозиториев
Исходный код программы для ЭВМ «ХэбитМир» разделён на следующие репозитории:
habitmir-mobile— исходный код мобильного клиентского приложения на платформе Flutter (язык программирования Dart);habitmir-backend— исходный код серверной части на платформе Node.js (TypeScript), включающий микросервисыgateway,habit,user,world,journal;habitmir-shared— общие типы данных, контракты API, вспомогательные утилиты, используемые клиентом и сервером;habitmir-infra— конфигурации развёртывания серверной инфраструктуры (Docker-композиции, Kubernetes-манифесты, скрипты сборки).
8.4. Доступ к исходному коду и резервное копирование
Доступ к репозиториям ограничен учётными записями работников правообладателя. Аутентификация при выполнении операций с репозиторием (clone, push, merge) осуществляется по SSH-ключам или персональным токенам доступа GitFlic.
Дополнительное резервное копирование репозиториев выполняется на собственные серверы правообладателя, расположенные на территории Российской Федерации, не реже одного раза в неделю.
8.5. Хранение объектного кода мобильного клиентского приложения
Скомпилированные артефакты мобильного клиентского приложения — файлы формата APK (Android Package) для операционной системы Android — хранятся в следующих местах:
- на собственных серверах правообладателя (bare-metal-инфраструктура на территории Российской Федерации) — для целей внутреннего тестирования, контроля версий сборок и архивирования релизов;
- в официальной консоли разработчика российского магазина приложений RuStore (rustore.ru) — для распространения программы конечным пользователям.
8.6. Хранение объектного кода серверной части
Скомпилированные артефакты серверной части программы — образы контейнеров Docker, содержащие транспилированный JavaScript-код микросервисов NestJS — хранятся в локальном реестре контейнеров (Docker Registry), развёрнутом на собственных серверах правообладателя на территории Российской Федерации.
Каждой собранной версии программы присваивается уникальный идентификатор, соответствующий хешу коммита в системе контроля версий Git, что обеспечивает прослеживаемую связь между объектным кодом и исходным текстом, по которому он был собран.
8.7. Среда сборки
Сборка программы для ЭВМ «ХэбитМир» осуществляется на собственных серверных мощностях правообладателя — на bare-metal-серверах, расположенных на территории Российской Федерации, под управлением операционной системы Linux Ubuntu LTS (open-source, лицензия GPL).
Сборка выполняется работниками правообладателя в ручном режиме по утверждённой внутренней процедуре с обязательной фиксацией параметров сборки и хеша коммита в системе контроля версий.
8.8. Технические средства компиляции мобильного клиентского приложения
| Инструмент | Назначение | Лицензия |
|---|---|---|
| Flutter SDK (стабильная версия) | Базовый SDK для сборки кросс-платформенного приложения | BSD-3-Clause |
| Dart SDK (входит в состав Flutter) | Компиляция исходного кода на языке Dart | BSD-3-Clause |
| Android SDK | Платформенный SDK для сборки приложений Android | Apache-2.0 |
| Android Build Tools | Инструменты низкоуровневой сборки APK | Apache-2.0 |
| Gradle | Система сборки проекта Android | Apache-2.0 |
| OpenJDK 17 (LTS) | Среда выполнения и компиляции для Gradle | GPL-2.0 with Classpath Exception |
Команда сборки релизного APK: flutter build apk --release. Результатом сборки является подписанный файл формата APK, готовый к публикации в RuStore.
8.9. Технические средства компиляции серверной части
| Инструмент | Назначение | Лицензия |
|---|---|---|
| Node.js 22 (LTS) | Среда выполнения JavaScript на сервере | MIT |
| TypeScript Compiler (tsc) | Транспиляция TypeScript в JavaScript | Apache-2.0 |
| SWC (Speedy Web Compiler) | Высокопроизводительный транспилятор TypeScript | Apache-2.0 |
| pnpm | Менеджер пакетов и зависимостей | MIT |
| Docker Engine | Сборка и упаковка контейнеризованных приложений | Apache-2.0 |
Последовательность команд сборки серверного микросервиса: pnpm install → pnpm run build → docker build -t habitmir-<service>:<version> .. Результатом является транспилированный JavaScript-код, упакованный в Docker-образ.
8.10. Дополнительные технические средства
| Инструмент | Назначение | Лицензия |
|---|---|---|
| Git | Получение исходного кода из репозитория | GPL-2.0 |
| ESLint | Статический анализ JavaScript/TypeScript | MIT |
| Dart Analyzer | Статический анализ кода Dart | BSD-3-Clause |
| Jest | Запуск автоматических тестов backend | MIT |
| Flutter Test | Запуск автоматических тестов mobile | BSD-3-Clause |
8.11. Воспроизводимость сборки
Сборка программы для ЭВМ «ХэбитМир» из исходного кода является воспроизводимой: при идентичных версиях SDK, компиляторов и зависимостей, зафиксированных в файлах блокировки версий (pubspec.lock для мобильного клиента, pnpm-lock.yaml для серверной части), сборка из одного и того же коммита системы контроля версий порождает функционально идентичный объектный код. Файлы блокировки версий хранятся в репозиториях исходного кода наряду с исходным текстом и являются обязательными для каждой сборки.
9. Сведения о правообладателе
| Параметр | Значение |
|---|---|
| Полное наименование | Общество с ограниченной ответственностью «Лаборатория Информационно-Коммуникационных Систем» |
| Сокращённое наименование | ООО «ЛИКС» |
| ОГРН | 1265000007810 |
| ИНН | 5038195735 |
| КПП | 503801001 |
| Юридический адрес | 141281, Московская область, г.о. Пушкинский, г. Ивантеевка, ул. Бережок, д. 3, кв. 43 |
| Сайт продукта «ХэбитМир» | https://habitmir.ru |
| Сайт компании | https://lix.su |
| Email для всех вопросов (поддержка, безопасность, ПДн) | support@habitmir.ru |
| Расчётный счёт | 40702810020000287873 в ООО «Банк Точка», БИК 044525104 |
10. История изменений документа
| Версия | Дата | Изменения |
|---|---|---|
| 1.2 | 25 сентября 2026 г. | Актуализация под версию приложения 2.0.1: 3D-остров (27 объектов, 6 стадий, 8 обликов), виджет, «Поделиться», тур с Тёпой, английский язык, системные требования (Android 7.0+), способы входа, модули, зависимости и инфраструктура |
| 1.1 | 5 мая 2026 г. | Обновлено |
| 1.0 | 4 мая 2026 г. | Первичная редакция документа |
Настоящий документ соответствует требованиям подпунктов «г» и «д» пункта 5 Правил формирования и ведения единого реестра российских программ для электронных вычислительных машин и баз данных, утверждённых Постановлением Правительства Российской Федерации от 16 ноября 2015 г. № 1236.