Сайт проекта: https://nizhnymaps.ru
Наш сервис рассчитан на обычного пользователя, которому не нужно ничего настраивать — всё делается с помощью простых кликов и интуитивного интерфейса.
После открытия сайта вы увидите панель слева и карту города справа.
1️⃣ Выбор интересов (тегов)
В левой части экрана есть набор кнопок (боксов) с категориями, например:
«музеи», «парки и скверы», «архитектура», «рестораны» и т.д.
Вы просто кликаете на те категории, которые вам интересны.
Можно выбрать одну, несколько или все — маршрут подстроится автоматически.
После выбора нажмите кнопку «Построить маршрут».
2️⃣ Выбор начальной точки маршрута
Есть три способа задать, откуда вы начинаете прогулку:
-
🗺️ Клик на карте — просто нажмите на любую точку на карте, и маршрут начнётся оттуда.
Это удобно, если вы уже где-то находитесь и хотите построить путь вокруг. -
⭐ Выбор популярного места — можно выбрать одно из центральных и известных мест города,
например Кремль, площадь Минина или набережную. Это особенно удобно для туристов. -
📍 Использовать моё местоположение — нажмите кнопку «по моему местоположению».
Приложение попробует определить вашу позицию и построить маршрут оттуда.
⚠️ Примечание: точность определения может зависеть от устройства и браузера.
В некоторых случаях (особенно за пределами Нижнего Новгорода) функция
может работать неточно. Если хотите выбрать точку вручную, просто снимите галочку
с этой опции и выберите точку на карте сами.
После выбора начальной точки и категорий нажмите «Построить маршрут».
Через несколько секунд вы увидите готовый маршрут на карте и его описание справа.
3️⃣ Описание маршрута
Справа (или под картой — в мобильной версии) появится автоматически сгенерированный текст:
— вступление, рассказывающее, куда вы отправляетесь;
— краткое описание каждой остановки (что это, чем интересно);
— заключение и советы, как можно продолжить прогулку.
Эти тексты формируются с помощью искусственного интеллекта, чтобы каждый маршрут звучал естественно, интересно и индивидуально.
• Подбирает интересные культурные точки рядом с вами.
• Строит логичный маршрут по реальным дорогам и тротуарам.
• Описывает маршрут на понятном человеческом языке.
• Учитывает интересы, время и местоположение.
• Работает и на мобильных устройствах, и на компьютере.
- Вы выбираете интересы и начальную точку.
- Приложение получает объекты из базы PostgreSQL с PostGIS.
- Алгоритм формирует маршрут с учётом расстояний и времени.
- ИИ создаёт описание прогулки и каждого объекта.
- Результат отображается на карте и в текстовом виде.
ИИ применяется «под капотом» для создания описаний маршрутов.
Он:
• превращает список точек в связное и живое описание;
• добавляет факты, атмосферу и контекст;
• адаптирует стиль под интересы пользователя.
Таким образом, вы получаете не шаблон, а настоящий рассказ о прогулке.
• Python 3.12 — основной язык проекта.
• Streamlit — удобный интерфейс без фронтенда.
• Pandas — анализ данных.
• PostgreSQL + PostGIS — хранение и работа с геоданными.
• Docker + Docker Compose — одинаковая среда и стабильность.
• uv — быстрый менеджер зависимостей.
• Makefile — автоматизация команд.
• Простота интерфейса и понятные шаги.
• Персонализированные маршруты с ИИ-описаниями.
• Кэширование запросов для скорости.
• Геолокация «от пользователя».
• Минимальная нагрузка на сервер.
• Готовность к масштабированию.
Можно запустить проект двумя способами: локально или через Docker
- Локальный запуск (предпочтительный):
- запустите файл install.sh / win_install.sh для linux / windows, пример:
./win_install.sh
-
активируйте виртуальное окружение по команде, которая будет выведена на экране:
-
запустите приложение:
uv run streamlit run main.py
- Запуск через Docker
Перед запуском убедитесь, что установлены:
- Docker и Docker Compose
- GNU Make
Также нужны ключи и параметры окружения в .env:
- PostgreSQL: POSTGRES_HOST, POSTGRES_PORT, POSTGRES_DB, POSTGRES_USER, POSTGRES_PASSWORD
- Ключи для ИИ-описаний: YANDEXGPT_API_KEY, YANDEXGPT_FOLDER_ID
-
Соберите проект:
make build -
Запустите режим разработки:
make dev
После этого приложение будет доступно по адресу: http://localhost:8501