Skip to content

Repository files navigation

Ссылка на бота https://t.me/ostrovok_friends_bot

запуск фронтенда

npm run dev

запуск сервера

npm run server

в .env нужно указать токен бота TELEGRAM_BOT_TOKEN

./server/.env TELEGRAM_BOT_TOKEN=your_bot_token_from_BotFather

как запустить на реальном сервере описано в ./server/https_configuration.md

Для того чтобы оно работало в telegram mini apps нужен https сервер, с нормальным ssl сертификатом. Для этого подходит lensencrypt. Но для этого нужен свой домен. Он у меня был, поэтому мне нужно было привязать только IP сервера.

Я это к чему вы не сможете протестировать функционал добавляния контактов из telegram на локалке с телефона, потому что для этого нужен глобальный https сервер. А телеграм вроде неумеет ходить на локалхост. Есть конечно обход типа сделать проксирование dev сервера через ngrok или pinggy. Но для этого придется создавать вообще своего бота в ТГ и постоянно менять эти рандомно сгенеренные адреса.

В общем верьте только моему видео с демонстрацией и всё лол.

но чтобы не создавать свой сервер и домен

ssh -p 443 -R0:127.0.0.1:3000 -L4300:127.0.0.1:4300 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 ayYXi9yo7nQ@free.pinggy.io
ssh -p 443 -R0:127.0.0.1:3001 -L4300:127.0.0.1:4300 -o StrictHostKeyChecking=no -o ServerAliveInterval=30 ayYXi9yo7nQ@free.pinggy.io

потом создать своего бота в телеграме, выбрать раздел mini apps и вставить туда нужные домены. Тогда функционал импорта контактов телеграм будет работать на Desktop версии у того человека кто запустил данного бота.

Описание с сайта

Высокоуровневое описание функционала сайта "Островок.Друзья рекомендуют"

Общая концепция

Сайт представляет собой социальную платформу для рекомендаций отелей, где пользователи могут видеть отзывы и рекомендации от своих друзей и экспертов, которых они читают. Платформа интегрирована с Telegram для импорта контактов и имеет систему геймификации с уровнями, достижениями и милями.


Основные страницы и их функционал

🏠 Главная страница (Рекомендации)

URL: / или /recommendations

Основной функционал:

  • Отображение отелей с рекомендациями от друзей и экспертов
  • Фильтр "Только с отзывами" для показа только отелей с рекомендациями
  • Баннер с приглашением попробовать "Островок.Открытия" (Tinder-подобный интерфейс)
  • Секция "Vibe Corner" - показывает отели, которые лайкнули пользователи, на которых вы подписаны

Ключевые особенности:

  • Рекомендации показываются только от друзей и экспертов, на которых подписан пользователь
  • Приоритет отдается отелям с большим количеством отзывов от друзей
  • Публичные отзывы экспертов видны всем подписчикам

🔍 Островок.Открытия (Discover)

URL: /discover

Основной функционал:

  • Tinder-подобный интерфейс для просмотра отелей
  • Свайп влево (дизлайк) или вправо (лайк) для оценки отелей
  • Слайдер с фотографиями, видео и отзывами друзей
  • Кнопка "Отменить" для возврата последнего действия
  • Кнопка "Поделиться" для отправки ссылки на отель

Геймификация:

  • За каждое действие начисляется XP
  • Лайкнутые отели автоматически добавляются в вишлист "Мои Находки"
  • Достижения за количество действий и собранных отелей

🎯 Система лайков и дизлайков: основа умной рекомендательной системы

Зачем нужны лайки и дизлайки?

Система лайков и дизлайков в разделе "Островок.Открытия" — это не просто развлекательный элемент, а ключевой компонент машинного обучения для персонализации рекомендаций. Вот как это работает:

1. Сбор данных о предпочтениях пользователя

Что собирается:

  • Прямые предпочтения: лайки/дизлайки конкретных отелей
  • Контекстные данные: тип поездки, бюджет, локация, стиль отеля
  • Временные паттерны: когда и как часто пользователь активен
  • Социальные сигналы: какие отели лайкают друзья пользователя

Пример: Если пользователь лайкает 5-звездочные отели в центре города и дизлайкает хостелы, система понимает его предпочтения по классу и расположению.

2. Обучение рекомендательного алгоритма

Машинное обучение на основе:

  • Коллаборативная фильтрация: "пользователи, похожие на вас, также лайкали эти отели"
  • Контентная фильтрация: анализ характеристик лайкнутых отелей (цена, рейтинг, удобства, локация)
  • Гибридный подход: комбинация социальных сигналов и характеристик отелей

Результат: Система учится предсказывать, какие отели понравятся пользователю, даже если он их еще не видел.

3. Улучшение качества рекомендаций

Как лайки помогают:

  • Повышение релевантности: показ отелей, максимально соответствующих вкусам
  • Снижение шума: фильтрация отелей, которые точно не подходят
  • Персонализация порядка: приоритизация отелей по вероятности лайка
  • Адаптация к изменениям: система обновляется при изменении предпочтений

4. Социальные сигналы и влияние друзей

Vibe Corner — умная социальная лента:

  • Показывает отели, которые лайкнули друзья и эксперты
  • Учитывает "социальное доказательство" — если друг лайкнул, возможно, и вам понравится
  • Создает эффект "FOMO" (fear of missing out) — не пропустить интересные места

Решение проблемы малого количества друзей:

  • Типичная ситуация: у большинства пользователей всего 2-3 друга в системе
  • Проблема: недостаточно социальных сигналов для качественных рекомендаций
  • Решение через лайки: система использует данные о предпочтениях всех пользователей, а не только друзей
  • Коллаборативная фильтрация: "пользователи с похожими вкусами также лайкали эти отели"
  • Экспертные сигналы: приоритет отзывам и лайкам от экспертов, которых читает много людей
  • Результат: даже с 2-3 друзьями пользователь получает персонализированные рекомендации на основе поведения тысяч других пользователей

5. Практические примеры работы системы

Сценарий 1: Новый пользователь

  • Система показывает разнообразные отели для "холодного старта"
  • Анализирует первые 10-15 лайков/дизлайков
  • Начинает формировать профиль предпочтений

Сценарий 2: Опытный пользователь

  • Система знает, что пользователь любит бутик-отели в центре
  • Показывает похожие отели в приоритете
  • Исключает хостелы и отели на окраинах

Сценарий 3: Изменение предпочтений

  • Пользователь начал лайкать семейные отели
  • Система постепенно адаптируется к новым предпочтениям
  • Учитывает контекст (возможно, появились дети)

7. Долгосрочные преимущества

Для пользователей:

  • Более релевантные рекомендации с каждым днем
  • Экономия времени на поиск подходящих отелей
  • Открытие новых мест, которые точно понравятся

Для платформы:

  • Повышение конверсии в бронирования
  • Увеличение времени, проведенного на сайте
  • Более точная таргетированная реклама
  • Ценные данные о предпочтениях пользователей

8. Этические аспекты и приватность

Защита данных:

  • Лайки/дизлайки не передаются третьим лицам
  • Анонимизация данных для аналитики
  • Возможность удаления истории предпочтений

Прозрачность:

  • Пользователь понимает, зачем нужны лайки
  • Видит, как его действия влияют на рекомендации
  • Может влиять на алгоритм через обратную связь

Дополнительные функции

👤 Мой Профиль (Passport)

URL: /profile

Основной функционал:

  • Профильная информация: имя, аватар, уровень, XP, мили, статус эксперта
  • Милевая программа: баланс миль, история транзакций, возможность дарить мили друзьям
  • Достижения: коллекция бейджей за различные активности
  • История путешествий: отзывы пользователя с картой посещенных мест
  • Челленджи: активные задания с наградами
  • Коллекция штампов: визуализация посещенных городов и стран
  • История открытий: отели, которые пользователь лайкнул в Discover
  • Список друзей: управление друзьями

🏨 Страница отеля

URL: /hotel/:hotelId

Основной функционал:

  • Детальная информация об отеле: фото, описание, рейтинг, цена
  • Система бронирования со скидками: возможность использовать мили для скидки
  • Эксклюзивные перки: дополнительные услуги за мили (завтрак, улучшение номера, поздний выезд)
  • Отзывы круга: отзывы от друзей и экспертов, на которых подписан пользователь
  • Добавление в вишлист: возможность сохранить отель в коллекцию

👥 Мои друзья

URL: /friends

Основной функционал:

  • Список друзей: отображение всех добавленных друзей с аватарами
  • Поиск по друзьям: фильтрация по имени
  • Импорт из Telegram: интеграция с Telegram для поиска друзей
  • Удаление друзей: возможность исключить из списка
  • Переход к профилям: просмотр профилей друзей

📝 Написание отзыва

URL: /submit-review/:hotelId

Основной функционал:

  • Пошаговый процесс: 5 шагов для создания отзыва
    1. Оценка отеля (1-5 звезд)
    2. Плюсы и минусы, лайфхак
    3. Теги поездки (семья, романтика, бизнес, соло, с животными)
    4. Загрузка фотографий (до 5 штук)
    5. Выбор публичности (анонимно или от эксперта)
  • Система наград: XP и мили за написание отзыва
  • Экспертский режим: публичные отзывы с именем автора (только для экспертов)

🎯 Приглашение друзей

URL: /invite

Основной функционал:

  • Волшебная ссылка: персональная ссылка для приглашения
  • Импорт контактов: поиск друзей в телефонной книге
  • Интеграция с Telegram: импорт контактов из Telegram
  • Поделиться в соцсетях: быстрая отправка приглашений

📋 Вишлисты

URL: /wishlists

Основной функционал:

  • Создание вишлистов: планирование поездок с названиями
  • Специальный вишлист "Мои Находки": автоматически пополняется из Discover
  • Сортировка: "Мои Находки" всегда сверху, остальные по алфавиту
  • Просмотр деталей: переход к детальному просмотру вишлиста

📋 Детали вишлиста

URL: /wishlist/:wishlistId

Основной функционал:

  • Список отелей: все отели в вишлисте с превью
  • Участники: отображение всех участников вишлиста
  • Приглашение друзей: добавление новых участников (только для владельца)
  • Переход к отелям: быстрый доступ к страницам отелей

🏆 Достижения

URL: /achievements/:userId

Основной функционал:

  • Коллекция бейджей: все доступные достижения
  • Статус получения: визуальное отображение полученных/неполученных бейджей
  • Описания: условия получения каждого достижения
  • Просмотр чужих профилей: возможность посмотреть достижения других пользователей

📊 Год в путешествиях

URL: /year-in-review

Основной функционал:

  • Персональная статистика: количество стран, городов, отзывов, миль, XP
  • Визуализация: красивая карточка с градиентом для соцсетей
  • Аналитика активности: лайки, тип поездок, текущий уровень

👤 Профиль другого пользователя

URL: /profile/:userId

Основной функционал:

  • Публичная информация: имя, аватар, уровень, достижения
  • История путешествий: отзывы и посещенные места
  • Публичные лайки: отели, которые пользователь лайкнул
  • Список друзей/подписок: кого читает пользователь
  • Кнопка подписки: возможность подписаться/отписаться
  • Достижения и коллекция штампов

⚙️ Админ-панель

URL: /admin

Основной функционал:

  • Модерация отзывов: одобрение/отклонение/возврат в ожидание
  • Фильтрация: по статусу отзывов (все, на модерации, одобренные, отклоненные)
  • Таблица отзывов: автор, отель, краткое содержание, статус, действия
  • Быстрые действия: изменение статуса одним кликом

Дополнительные функции

🎮 Система геймификации

  • 4 уровня: Турист → Исследователь → Эксперт → Легенда Островка
  • 9 типов достижений: от первого отзыва до коллекционера находок
  • Милевая программа: начисление и трата миль на скидки и перки
  • XP система: опыт за все активности в приложении

📱 Интеграция с Telegram

  • Импорт контактов: поиск друзей в Telegram
  • Telegram Mini App: оптимизация для работы в Telegram
  • Безопасность: защищенная передача данных

🔒 Система приватности

  • Анонимные отзывы: по умолчанию отзывы публикуются без имени
  • Экспертские отзывы: публичные отзывы с именем (только для экспертов)
  • Контроль видимости: пользователь сам выбирает, кому показывать отзывы

Технические особенности

  • Адаптивный дизайн: работает на мобильных и десктопных устройствах
  • Mock данные: полная имитация реальной работы с данными
  • Telegram WebApp: интеграция с Telegram для мобильного использования
  • HTTPS обязателен: для работы с Telegram API требуется SSL-сертификат

Этот сайт представляет собой полнофункциональную социальную платформу для рекомендаций отелей с элементами геймификации и интеграцией с популярными мессенджерами.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages