А ещё — без бюджета на мощную инфраструктуру, опыта работы в команде и прокаченных софтов.
В этой статье — путь наших студентов, которые разработали приложение для деловых знакомств на базе Python и TypeScript. Сами выбрали стек, организовали командную работу, проводили ретро, учились распределять неинтересные задачи и ошибались в оценке сложности тасков. Итог: всё хорошо, но каков был путь!

Скрытый текст
Мы в Контуре занимаемся образовательными программами: курируем универы и создаём со студентами ФИИТ (УрФУ) разные полезные пет‑проекты, которые можно применять в нашей компании и не только. Решили, что будет интересно и полезно рассказывать о них здесь: как студенты пробуют инструменты впервые, формируют стеки технологий, набивают первые шишки, выходят из сложных ситуаций и прокачивают софты.
Рассказ будет от первого лица — студентов ФИИТ (курирует Контур).
Как появился Деловой Тиндер
Деловой Тиндер — это мини-приложение в Telegram для деловых знакомств. В нём можно найти единомышленников и даже целую команду, чтобы вместе реализовывать идеи. Обычные соцсети для этой цели не подходят — рекомендации в них работают иначе.
Мы не стремились запустить бизнес или собрать команду под стартап, нам просто не хватало пространства, где можно было бы легко находить «своих» людей. Поэтому взялись за разработку сервиса, который решает эту задачу.
Занимались проектом в общей сложности три семестра, то есть примерно девять месяцев.
Как работает сервис
Всё просто: заходите в приложение > заполняете профиль > выбираете интересы и регулярно получаете новые рекомендации людей, которые максимально близки вам по духу и навыкам. Когда два человека ставят взаимные «лайки», им открывается доступ к чату в мессенджере — можно начинать переписку.


Технологический стек
Бэкенд писали на Python с использованием Django и FastAPI: от Django мы получили топовую ORM с миграциями и админку из коробки, а FastAPI добавил автодокументацию и удобную валидацию запросов.
Чтобы хранить данные, использовали PostgreSQL, медиафайлы разместили в облачном хранилище S3.
Фронтенд реализовали на TypeScript с использованием React и Redux, это гарантировало стабильность и удобство дальнейшей разработки.
Запросы пользователей маршрутизируются через Nginx, инфраструктуру разместили в Yandex Cloud с настроенными CI/CD процессами через GitHub Actions 一 они обеспечивают автоматическую сборку, тестирование и деплой.
Мы выбрали этот стек технологий по нескольким причинам:
По ним есть большое количество документации в свободном доступе: бери да изучай.
Довольно активное комьюнити, в котором разработчики общаются друг с другом и делятся знаниями.
У каждого из нашей группы был опыт работы с вышеперечисленными технологиями, а дополнительная практика пошла бы только на пользу.
Считаем, что выбранные технологии позволяют создавать приложения с высокой скоростью.
Самое необычное, что здесь есть, — нестандартное сочетание Django и FastAPI. Практически на каждом из этапов ревью от экспертов никто не мог понять, почему мы используем обе технологии одновременно, хотя обычно принято либо одно, либо другое. На конференции Python Meetup был доклад «Await anywhere. Как подружить два воющих царства: sync и async», в котором рассказали об этом необычном сочетании. Советуем посмотреть чтобы понять наш выбор и чем мы вдохновлялись. ?
Процесс разработки: от прототипа до релиза
Работали мы над проектом короткими спринтами по две недели с еженедельными созвонами по выходным, после каждого спринта проводили ретроспективу. Так преподавателям было удобно следить за прогрессом всех команд и оценивать результат, а для нас при высокой загрузке на учёбе такой график позволял «не сойти с ума» от переизбытка задач.
На регулярках мы синхронились по задачам, обсуждали, кто что делает и планирует делать дальше, старались распределить нагрузку равномерно между всеми членами команды. Ретро проводили в конце каждого спринта, чтобы понять, эффективно ли распределяли нагрузку, все ли довольны тем, что делали, или нужно что-то поменять в следующий раз, надо ли взять больше работы на следующий спринт.
Для трекинга планов, целей и задач выбрали платформу Buildin.ai 一 аналог Notion. В целом, было удобно, хотя иногда и возникали трудности с точной оценкой задач и распределением нагрузки между участниками.
Например, чаще всего мы сталкивались с такой проблемой: есть бэкендерская задача, которую оценили как «S», но если её начинает делать кто-то менее скилловый, чем основной бэкендер команды, её размер увеличивается до «M», что продлевает срок разработки в 2-3 раза. В конечном итоге, мы научились распределять задачи более правильно и эффективно, чтобы не делать таску, которую можно сделать за 2 дня, целую неделю.
Иногда в команде были конфликты на почве того, кто что хочет и должен делать. Если бы мы делали только то, что хотим, у нас бы ничего не получилось, поэтому старались искать компромисс и идти на уступки друг другу. Иногда нужно браться и за более скучную/однотипную/рутинную работу. Чтобы никто не чувствовал себя ущемлённым, мы старались распределять неинтересные задачи между всеми участниками равномерно.
Сначала мы сформировали user-flow и создали макет приложения
Для этого мы продумали основные этапы: регистрация > ознакомление > сам процесс оценки интересов > взаимодействие со своим и чужими профилями. Думали, как их связать между собой, опирались на существующие интерфейсы известных нам приложений, брали идеи оттуда.
Далее перешли к разработке MVP. Его мы разрабатывали «по наитию» — делали так, как чувствовали, чтобы нам самим нравилось и каким бы мы хотели видеть наш сервис.
Главная проблема была в том, что мы не учли, что пользоваться этим будут другие люди ?, из-за чего некоторые вещи, которые казались нам очевидными, пользователи восприняли критично.
После пробного запуска сервиса мы собрали обратную связь от друзей и преподавателей. Оказалось, что интерфейс и логика работы требуют серьезных доработок. Например, в изначальном прототипе систему выбора интересов мы реализовали в виде свайпов карточек — по аналогии с Tinder, поэтому у пользователя было сразу четыре варианта оценки: «нравится», «не нравится», «возможно» и «не уверен». UX-исследование и последующее тестирование показали, что такой подход создаёт лишнюю когнитивную нагрузку и замедляет взаимодействие с сервисом.


В результате мы полностью переработали этот фрагмент. Вместо свайпов внедрили удобный список интересов с возможностью многократного выбора, а систему оценок сделали бинарной: пользователь либо заинтересован, либо нет, других вариантов и не надо. Это значительно упростило интерфейс и ускорило процесс заполнения профиля.
С какими проблемами столкнулись
Всего возникло две большие трудности:
Ограниченные ресурсы.
Главной сложностью стала нехватка бюджета на мощную инфраструктуру. Это требовало постоянной оптимизации и аккуратной работы с ресурсами. Все компоненты проекта: бэкенд, Telegram-бот, админка, фронтенд, база данных и балансировщик нагрузки запускались в отдельных docker-контейнерах, но при этом жили на одной виртуальной машине с минимальными характеристиками.
Чтобы выдерживать нагрузку и не терять в производительности, реализовали кэширование часто используемых данных и тщательно оптимизировали SQL-запросы. Каждый из них проверяли с помощью оператора EXPLAIN для оценки эффективности. Такой подход позволил нам обеспечить стабильную работу сервиса даже в условиях ограниченных ресурсов.
Незнакомый фронтенд.
Вторая большая проблема — отсутствие достаточного опыта фронтенд-разработки. Сначала было трудно разобраться с организацией структуры приложения, понять, как грамотно использовать Redux и написать чистый и поддерживаемый код на React.
Из-за этого часто приходилось переписывать отдельные компоненты. Решали эти сложности совместными обсуждениями, взаимопомощью и регулярными код-ревью, также постоянно изучали официальную документацию и статьи по фронтенду. Благодаря этим усилиям со временем мы хорошенько повысили качество кода и научились создавать стабильные интерфейсы.
Итоги и планы на будущее
Сегодня наш сервис доступен в Telegram в формате мини-приложения. Проект успешно прошёл стадию MVP, получил позитивный отклик от пользователей и продолжает стабильно работать. Пользователи успешно находят единомышленников, что подтверждает реальную ценность проекта.
Пока мы поставили развитие этого проекта на паузу, так как сейчас сосредоточены на окончании университета, но планируем вернуться к работе: улучшить систему рекомендаций и запустить реферальную программу. Система рекомендаций — самое ценное, что есть практически в любом сервисе, который пытается предложить что-то пользователю по его текущим интересам, будь-то короткие видео, Тиндер, Пинтерест и так далее. Тут нет предела совершенству и мы планируем её бесконечно развивать и улучшать.
Пользуетесь ли вы подобными приложениями по поиску новых деловых контактов? Чего вам не хватает в них? Будем рады пообщаться в комментариях к этой статье. ?
Комментарии (5)

rivo
25.11.2025 12:18Не понятно как работает матчинг, больше похоже на поиск кружка по интересам, а не деловых партнеров.
Например, часто встречается ситуация, когда небольшой инвестор не может найти грамотных исполнителей и наоборот. Пересечение обших интересов у них очень небольшое.
IvanoDigital
правильный заголовок: "Наговнячили"
PelmenBlin
Это студенты, бывшие школьники. Не каждый взрослый разраб знает технологии, которые они использовали.