Мобильное приложение «Белиберда»
| Версия приложения | 1.0.3 (сборка 9) |
| Дата составления | 18 сентября 2026 г. |
| Правообладатель | ООО «23 программиста» ОГРН 1225400010670, ИНН 5473003039, КПП 547301001 |
| Адрес правообладателя | 633010, Новосибирская область, г. Бердск, ул. Ленина, д. 69, офис 306 |
Полное наименование: мобильное приложение «Белиберда».
Идентификаторы в магазинах приложений:
| Платформа | Идентификатор | Магазин |
|---|---|---|
| Android | com.devs23.nonsense |
RuStore, Google Play |
| iOS / iPadOS | id6774589652 |
App Store |
Страницы приложения:
RuStore: https://www.rustore.ru/catalog/app/com.devs23.nonsense
App Store: https://apps.apple.com/us/app/белиберда/id6774589652
Google Play: https://play.google.com/store/apps/details?id=com.devs23.nonsense
Сайт: https://beliberda.23devs.ru/
Руководство пользователя: https://beliberda.23devs.ru/docs/beliberda-user-guide.pdf
«Белиберда» — мобильное игровое приложение (party-игра) для одного или нескольких участников. Игроки по очереди отвечают на короткие вопросы («КТО?», «ГДЕ?», «ЧТО СДЕЛАЛ?»), не видя контекста истории и ответов друг друга. После последнего ответа приложение подставляет все ответы в заранее подготовленный текст сценария и показывает готовую юмористическую историю, которой можно поделиться.
Класс программного обеспечения по классификатору Минцифры России: 05 «Прикладное программное обеспечение», подкласс 05.03 «Игры и развлечения».
Досуг и развлечение. Пользователь — физическое лицо, владелец мобильного устройства. Специальной подготовки не требуется. Регистрация и учётная запись не нужны.
Экраны проходятся по порядку: Приветствие → Настройка игры → Выбор сценария → Ввод ответа → Результат. В командном режиме после каждого ответа показывается экран передачи устройства. С экрана приветствия также открываются Настройки.
| № | Экран | Назначение |
|---|---|---|
| 1 | Приветствие (WelcomeScreen) |
Заголовок, выбранная роль, переход к игре и настройкам; при первом запуске — выбор роли |
| 2 | Настройка игры (SetupScreen) |
Режим «Один»/«Команда», ввод имён участников, смена роли на раунд |
| 3 | Выбор сценария (ThemeScreen) |
Карточки сценариев, фильтр по пакетам, покупка пакета, отправка идеи сценария |
| 4a | Ввод ответа (AnswerInputScreen) |
Подпись вопроса, поле ввода, индикатор прогресса |
| 4b | Передача устройства (PassPhoneScreen) |
Скрытие предыдущего ответа, имя следующего игрока |
| 5 | Результат (ResultScreen) |
Готовая история с выделенными ответами, «Поделиться», «Играть снова» |
| — | Настройки (SettingsScreen) |
Восстановление покупок, юридические ссылки, версия |
| Компонент | Значение |
|---|---|
| Язык программирования | Dart 3.11 |
| Фреймворк | Flutter 3.41 (единая кодовая база для Android и iOS) |
| Управление состоянием | Riverpod 2 с генерацией кода |
| Модели данных | неизменяемые классы (Freezed) |
| Хранение данных | локальное хранилище «ключ–значение» ОС (SharedPreferences на Android, NSUserDefaults на iOS) |
| Серверная часть | отсутствует |
Приложение работает полностью автономно: игровой процесс не требует подключения к сети. Сеть используется только для необязательных функций (раздел 5).
| Каталог | Содержимое |
|---|---|
lib/screens/ |
экраны пользовательского интерфейса (один файл — один экран) |
lib/providers/ |
провайдеры состояния: игровая сессия, профиль, покупки |
lib/models/ |
модели: игровая сессия, сценарий, вопрос, роль |
lib/logic/ |
движок сборки истории (result_builder.dart) |
lib/data/ |
встроенный контент: сценарии и метаданные пакетов |
lib/services/ |
локальное хранение, аналитика, покупки, отправка сообщений |
lib/services/billing/ |
абстракция магазина приложений и её реализации |
lib/widgets/, lib/theme/, lib/utils/ |
общие элементы интерфейса, оформление, вспомогательные функции |
test/, integration_test/ |
автоматические тесты |
GameNotifier (игровая сессия), ProfileNotifier (роль), PurchaseNotifier (покупки). Живут всё время работы приложения.Сценарий (Scenario) содержит:
[0], [1], … [n] на местах ответов;Пример фрагмента шаблона:
Мысленно я уже отправился [2], но пришлось вернуться к реальности.
...
Ну, а как иначе, я же {подпись}!
Во время игры приложение держит в памяти текущее состояние партии: режим (один игрок или команда), имена участников, чья сейчас очередь, роль рассказчика, выбранный сценарий, уже введённые ответы и номер текущего вопроса.
Партия последовательно проходит следующие состояния:
| Состояние | Что происходит |
|---|---|
| Ожидание | Сценарий ещё не выбран. |
| Ввод ответа | Игрок видит короткий вопрос и вводит ответ. |
| Передача устройства | Только в командном режиме. После каждого ответа экран скрывает введённое и называет следующего игрока; после нажатия «Я ГОТОВ!» снова открывается ввод ответа. |
| Завершена | Получены ответы на все вопросы — открывается готовая история. |
Каждый введённый ответ сохраняется по порядку, лишние пробелы по краям удаляются. Когда ответов становится столько же, сколько вопросов в сценарии, партия завершается. В командном режиме вопросы достаются участникам по кругу: первому, второму, …, последнему, затем снова первому.
Ответы хранятся только в оперативной памяти в течение одной игровой сессии и на устройство не записываются. При начале новой игры или возврате на главный экран они удаляются. Наружу ответы попадают лишь в составе готовой истории и только по явному действию пользователя («Поделиться», «Отправить в предложку»).
Сборка выполняется функциями buildResultText (текст для экспорта) и buildResultSpans (текст для отображения с подсветкой ответов) в lib/logic/result_builder.dart. Обе функции используют одинаковые правила, поэтому текст на экране и в экспорте совпадает.
{роль} заменяется на название роли («ёжик в тумане»), токен {подпись} — на развёрнутую фразу от первого лица («ёжик — я и не из такого тумана выходил»).[n] (регулярное выражение \[(\d+)\]) заменяется на n-й ответ. Отсутствующий ответ заменяется на ???.., !, ?, …, перевод строки, в том числе за закрывающей кавычкой) или метка открывает текст, первая буква ответа делается заглавной. Остальной текст ответа не изменяется.Автоматический тест проверяет каждый встроенный сценарий в каждом варианте рода: число меток [n] совпадает с числом вопросов, отсутствуют неизвестные токены в фигурных скобках. Ошибка в сценарии блокирует сборку релиза.
| Направление | Когда | Что передаётся |
|---|---|---|
| AppMetrica (ООО «Яндекс») | в ходе работы | обезличенные события: начало/завершение/экспорт сценария (идентификатор сценария, режим, число игроков), события покупок |
| API ВКонтакте (ООО «ВК») | только по действию пользователя | текст идеи сценария, текст отзыва или изображение истории; анонимный случайный идентификатор установки, платформа и версия ОС |
| App Store (Apple) | покупка / восстановление; оценка приложения | запросы к платёжной системе магазина; системное окно оценки и отзыва App Store |
| Google Play (Google) | оценка приложения | системное окно оценки и отзыва Google Play (In-App Review); только в сборке для Google Play |
| RuStore (ООО «ВК») | покупка / восстановление, оценка | запросы к платёжной системе магазина; системное окно оценки и отзыва RuStore |
| Системное меню «Поделиться» | по действию пользователя | изображение и текст истории |
Приложение не собирает имя, телефон, адрес электронной почты, геолокацию, контакты. Имена участников командного режима хранятся только в памяти и никуда не передаются. Весь обмен ведётся по HTTPS.
| Ключ | Содержимое |
|---|---|
profile_persona, profile_onboarded |
выбранная роль, признак прохождения первого запуска |
purchase_owned_packs |
идентификаторы купленных пакетов (кеш, источник истины — магазин) |
review_* |
счётчик завершённых игр и параметры показа запроса оценки |
install_id |
случайный анонимный идентификатор установки (6 байт), создаётся при первой отправке сообщения |
Данные удаляются вместе с приложением.
| Параметр | Android | iOS / iPadOS |
|---|---|---|
| Минимальная версия ОС | Android 8.0 (API 26) | iOS 15.0 |
| Целевая версия ОС | Android 16 (API 36) | актуальная |
| Архитектура процессора | arm64-v8a, armeabi-v7a, x86_64 | arm64 |
| Свободное место | не менее 150 МБ | не менее 150 МБ |
| Оперативная память | от 2 ГБ | от 2 ГБ |
| Сеть | не требуется для игры | не требуется для игры |
| Разрешения | доступ в интернет | — |
| Сборка | Магазин | Платные пакеты | Сервисы Google |
|---|---|---|---|
| Android, RuStore | RuStore | есть (RuStore Pay SDK) | исключены из сборки |
| Android, Google Play | Google Play | нет | Google Play In-App Review |
| iOS | App Store | есть (StoreKit 2) | нет |
© 2026 ООО «23 программиста». Все права защищены.