Платформа знакомств

Baxtiyor Oila

Сервис знакомств для узбекского сообщества в Германии — пользовательское и админ Telegram Mini-приложения с алгоритмом подбора профилей. Создан на React, Go API и Python-боте уведомлений.

Baxtiyor Oila

Обзор

Baxtiyor Oila — платформа знакомств для узбекской диаспоры в Германии — сообщества с ограниченными возможностями познакомиться с подходящими партнёрами в рамках своей культуры. Весь сервис живёт внутри Telegram как Mini App, поэтому пользователям не нужно ничего скачивать. Алгоритм подбора выводит совместимые профили, а Python-бот держит пользователей в курсе новых совпадений.

Что я сделал

  • Создал пользовательское Telegram Mini App на React — создание профиля, просмотр совпадений и обмен сообщениями — плюс отдельное приложение администратора для модерации.

  • Разработал Go REST API бэкенд — профили пользователей, логику подбора и всё хранение данных.

  • Создал алгоритм подбора и Python-бот уведомлений, который сообщает пользователям о появлении нового совместимого профиля.

Архитектура

Два React Telegram Mini App — один для пользователей, один для администраторов — обращаются к Go REST API, обрабатывающему профили и логику подбора. Отдельный Python Telegram-бот обрабатывает асинхронные уведомления, так что пользователи получают сообщение в момент появления нового совпадения без опроса.

Под капотом

  • Верификация initData Telegram Mini App для пользовательского и административного приложений — каждый запрос проверяется по криптографической спецификации подписи Telegram, поэтому только законные пользователи Telegram могут аутентифицироваться.

  • Алгоритм подбора профилей, оценивающий возрастной диапазон, общие интересы и местоположение для отображения ранжированных профилей-кандидатов — давая пользователям наиболее совместимые совпадения первыми.

  • Python-бот уведомлений, отправляющий уведомления о совпадениях в реальном времени через Telegram Bot API — отделён от основного API, поэтому доставка совпадений не зависит от открытия пользователем приложения.

Чему я научился

  • Доставка внутри Telegram устраняет самую сложную часть любого нового потребительского приложения — заставить пользователей что-то установить. Дистрибуция была встроена с первого дня.

  • Отделение уровня уведомлений (Python-бот) от API было правильным решением — это позволяло развёртывать, обновлять или перезапускать любой сервис без влияния на другой.

Технологии

Фронтенд

  • React
  • TypeScript
  • @telegram-apps/sdk

Бэкенд

  • Go
  • REST API

Бот и уведомления

  • Python
  • Telegram Bot API