🐱 ЗеленоградскГид

Приложение «Зеленоградск: Гид и Жильё» — техническое описание

«Зеленоградск: Гид и Жильё» — офлайн-first путеводитель по Зеленоградску (Кранцу) с ИИ-движками прямо на устройстве: семантический поиск, построение маршрутов, распознавание блюд, AR и пространственный звук. Ниже — подробное техническое описание. Данные на 30 мая 2026 г..

Технические характеристики

ПараметрЗначение
ПлатформаAndroid 8.0 и новее (API 26+)
Архитектураarm64-v8a, x86_64 (64-bit)
ИнтерфейсKotlin + Jetpack Compose, Material 3
ЯдроRust «zel-core» через UniFFI/JNA — нативная библиотека ~780 КБ (arm64, stripped)
ХранилищеRoom (SQLite) + данные в APK — работает офлайн
Версия1.0.0
ЦенаБесплатно, без рекламы
ЯзыкРусский

Архитектура

Приложение построено в два слоя. Интерфейс — на Kotlin и Jetpack Compose (Material 3): декларативный UI, плавные анимации, тёмная/светлая тема. Вычислительное ядро — отдельная нативная библиотека на Rust (zel-core), подключённая через UniFFI и JNA. Тяжёлая логика не зависит от интерфейса и сервера: всё считается на телефоне.

📱 Compose UI  ⟷  🦀 Rust-ядро zel-core (UniFFI/JNA)  ⟷  💾 Room + данные в APK. Сеть подключается только для бронирования и «пульса города».

Движки на Rust (zel-core)

Каждый «движок» — отдельный модуль на Rust, вызываемый из Kotlin. Часть выделена в расширенную сборку (full-engines), чтобы не раздувать размер базовой версии.

ДвижокЧто делаетПроизводительность
SemanticSearchНаходит места по смыслу запроса («где поесть рыбу у моря»), а не только по точному совпадению слов. Индекс строится на устройстве.< 1 мс на запрос
RouteEngineГраф-маршрутизация по точкам города: оптимальный порядок, короткие переходы, тайминг. Полностью офлайн.мгновенно, офлайн
DishRecognizerПо тексту меню определяет местные блюда (строганина, клопсы, марципан), показывает «генеалогию» и ритуал подачи.< 1 мс
CityPulseEngineСчитает «настроение» города из ежедневных сигналов (события, афиша), детектит аномалии и всплески активности.on-device
OfflineQueueКопит действия без сети (избранное, заметки) и синхронизирует, когда связь появится.надёжно при потере сети
Geo (H3-подобный)Расчёт расстояний (haversine), привязка GPS к ячейкам, поиск ближайших объектов и соседних ячеек.микросекунды
SpatialAudio (HRTF)Балтийские саундскейпы и 3D-аудиогид: звук «привязан» к месту через HRTF-свёртку. (расширенная сборка)для AR-сцен
MorphВизуальный морфинг и «родословная» блюд — как блюдо менялось во времени. (расширенная сборка)для Time Machine
VPS (визуальное позиционирование)Определяет положение по силуэтам зданий для дополненной реальности, без облака. (расширенная сборка)цель 60 FPS
OfflineNarratorГенерирует контекстную речь аудиогида на устройстве, без интернета. (расширенная сборка)on-device

Оффлайн-first: как это работает

Это не «кэширование на всякий случай», а принцип: основной функционал не зависит от сети вообще. Карта, объекты, маршруты, поиск, аудиогид и распознавание блюд работают в самолёте, в роуминге и на Куршской косе, где связь пропадает. Данные о городе упакованы в установочный файл, локальный кэш — на Room (SQLite), а вычисления выполняет Rust-ядро на устройстве. Сеть нужна только для двух вещей: перехода к бронированию у партнёров и обновления «пульса города» (с поддержкой ETag/304, чтобы не качать лишнего).

Данные в приложении

КонтентОбъём
Объекты (POI)470 в Зеленоградске, 720+ по области (Светлогорск, Янтарный)
Маршруты100 готовых + 5 гастро-трейлов
Рестораны30 с детальными профилями (92)
Блюда61 в гастро-энциклопедии
Истории и легенды58 статей
Исторические фото20 для «Машины времени»
Коты15 кото-объектов для кото-квеста

Функции

🗺 Карта и навигация

Оффлайн-карта города, навигация между точками, режим «рядом» (nearby) с радиусом поиска.

🐱 Кото-квест

Игровой маршрут по котам Зеленоградска — собери все кото-объекты города.

🍽 Гастрономия

61 блюд балтийской кухни, 30 ресторанов с профилями, гастро-трейлы и распознавание меню.

🧭 Маршруты

100 готовых маршрутов с таймингом по часам и 5 гастро-трейлов.

📸 Камера и AR

Визуальный гид и AR-сцены, распознавание объектов через камеру.

⏳ Машина времени

Морфинг «было/стало»: 20 исторических фото Кранца совмещаются с современным видом.

📚 Энциклопедия

Истории, легенды и факты о городе — статьи и справочник.

🏨 Жильё и экскурсии

Подбор жилья и экскурсий с бронированием у партнёров.

🌊 Пульс города и погода

Что происходит в городе сегодня + локальная погода.

🖼 EXIF-история прогулки

Приложение читает только EXIF ваших фото из галереи, сопоставляет GPS с объектами и собирает таймлайн прогулки.

Приватность и разрешения

Приложение не отслеживает перемещения и не собирает аналитику профиля. Все разрешения — опциональные и используются строго по делу:

РазрешениеЗачем
Геолокация (GPS)Режим «рядом», навигация и привязка фото к местам. Можно не давать — гид работает и без неё.
КамераAR-сцены, визуальный гид и распознавание блюд по меню.
Доступ к фотоТолько для EXIF-истории: читаются метаданные снимков, сами фото никуда не отправляются.
ИнтернетТолько для перехода к бронированию у партнёров и обновления «пульса города». Весь основной функционал — офлайн.

Системные требования

Частые вопросы

Работает ли приложение без интернета?

Да, это офлайн-first приложение. Карта, 470+ объектов, маршруты, аудиогид, поиск и распознавание блюд работают полностью без сети — все данные и вычислительные движки находятся на устройстве. Интернет нужен только чтобы перейти к бронированию жилья/экскурсий у партнёров и обновить «пульс города».

Зачем приложению ядро на Rust?

Тяжёлые задачи — семантический поиск, построение маршрутов, распознавание блюд, пространственный звук и AR-позиционирование — вынесены в нативную библиотеку на Rust (zel-core). Это даёт скорость (поиск и распознавание — меньше миллисекунды), компактность (ядро ~780 КБ) и работу без сервера: всё считается прямо на телефоне.

Сколько места занимает приложение?

Приложение компактное: нативное ядро на Rust — около 780 КБ на архитектуру, данные о городе (объекты, маршруты, истории) упакованы в установочный файл, чтобы работать офлайн. Оптимизация размера — одна из целей проекта (release-сборка с LTO и strip).

Какие данные собирает приложение?

Приложение не отслеживает пользователя и не собирает аналитику о перемещениях. Геолокация используется только на устройстве для режима «рядом» и навигации. EXIF-история читает метаданные ваших фото локально — снимки никуда не загружаются.

На каких устройствах работает?

На смартфонах с Android 8.0 (API 26) и новее, архитектуры arm64-v8a и x86_64. Для AR-функций и распознавания блюд нужна камера, для навигации — GPS, но базовый гид работает и без них.

Сколько стоит приложение?

Бесплатно и без рекламы. Проект окупается партнёрскими переходами на бронирование жилья и экскурсий — для вас это ничего не меняет и не добавляет комиссии.