GUDS
Кейс · 2026Найти исполнителя на сегодня и работу на годы приходилось в разных местах. Мы сделали GUDS — одно кроссплатформенное приложение для обоих сценариев со встроенным чатом.


Обзор
GUDS соединяет тех, кому нужна работа, с теми, кому нужны работники, в Узбекистане. В одном приложении четыре продукта: соискатели смотрят вакансии и откликаются с резюме; работодатели публикуют вакансии и ищут резюме; заказчик размещает разовую задачу, и приложение находит исполнителя поблизости; исполнители выходят на линию и получают такие задачи в реальном времени. Всех связывает мессенджер. Мы сделали кроссплатформенное приложение на React Native, бэкенд на Django и лендинг guds.inc. Приложение доступно в App Store и Google Play, начиная с Ташкента.
Задача
Разовую работу в Ташкенте договариваются по телефону и в чатах, постоянную ищут на сайтах вакансий. Заказчик с задачей на сегодня не видит, кто свободен рядом, а исполнитель не видит, что предлагают поблизости. Приложение должно было работать для обеих сторон обоих рынков — и сделать разовую задачу такой же быстрой, как вызов такси.
- C1
Четыре приложения в одном
У соискателей, работодателей, заказчиков и исполнителей разные экраны и сценарии, но общий вход, профиль и мессенджер.
- C2
Реальное время на телефоне
Предложения, отслеживание и чат должны выдерживать слабую мобильную сеть, уход приложения в фон и ограничения батареи.
- C3
Три языка
Каждый экран на узбекском, русском и английском, узбекский — по умолчанию.
Наш подход — журнал решенийЖурнал решений
Одно приложение, четыре продукта — у каждого своя навигация, но общие аккаунт, чат и бэкенд. Ниже — решения, которые сформировали систему, и цена каждого из них.Решения, которые сформировали систему, и цена каждого из них.
| № | Решение | Почему | Принятый компромисс |
|---|---|---|---|
| D1 | Оболочка суперприложения, переключающая навигаторы мини-приложений. | Одна установка и один вход для четырёх продуктов и место для доставки, магазина и еды без нового приложения. | У каждого мини-приложения своя навигация и кэш, и их согласованность требует внимания. |
| D2 | Подбор как в такси через WebSocket: исполнители передают геопозицию, предложения приходят с обратным отсчётом. | Разовая задача должна находить исполнителя за минуты, а заказчик — видеть его приближение на карте. | Разрешения на геолокацию, расход батареи и переподключения требуют аккуратности: сокет переподключается с паузами, а экран не гаснет, только пока исполнитель на линии. |
| D3 | React Native CLI с нативными модулями и обновлениями «по воздуху» вместо управляемой среды. | Звонкам, пуш-уведомлениям, блокировке сна и картам нужен нативный код; исправления JavaScript выходят без ожидания проверки в сторах. | Сборки для iOS и Android команда поддерживает сама. |
- D1
Оболочка суперприложения, переключающая навигаторы мини-приложений.
- Почему
- Одна установка и один вход для четырёх продуктов и место для доставки, магазина и еды без нового приложения.
- Компромисс
- У каждого мини-приложения своя навигация и кэш, и их согласованность требует внимания.
- D2
Подбор как в такси через WebSocket: исполнители передают геопозицию, предложения приходят с обратным отсчётом.
- Почему
- Разовая задача должна находить исполнителя за минуты, а заказчик — видеть его приближение на карте.
- Компромисс
- Разрешения на геолокацию, расход батареи и переподключения требуют аккуратности: сокет переподключается с паузами, а экран не гаснет, только пока исполнитель на линии.
- D3
React Native CLI с нативными модулями и обновлениями «по воздуху» вместо управляемой среды.
- Почему
- Звонкам, пуш-уведомлениям, блокировке сна и картам нужен нативный код; исправления JavaScript выходят без ожидания проверки в сторах.
- Компромисс
- Сборки для iOS и Android команда поддерживает сама.
Решение и архитектураАрхитектура
Одно приложение на React Native, API на Django и WebSocket-каналы для чата и задач в реальном времени.
Приложение работает через REST API и держит четыре WebSocket-канала: чаты, звонки, а также сторона заказчика и сторона исполнителя в разовой задаче. Карты и поиск адресов — Google, пуш-уведомления — OneSignal, пополнение кошелька — Payme с возвратом в приложение по deep link.
- Создано SwiftCore
- Существующая или сторонняя система
- Единая точка входа для всех клиентов
Технологии
Инструменты, работающие в продакшене этого проекта, и причины, по которым каждый выбран вместо альтернатив.
Фронтенд
- React Native
- TypeScript
- React Navigation
- TanStack Query
- Zustand
- MMKV
- Reanimated
React Native · TypeScript · React Navigation · TanStack Query · Zustand · MMKV · Reanimated
Один код для iOS и Android, быстрое локальное хранилище и плавные анимированные панели и карты.
Бэкенд
- Python
- Django
- Django REST Framework
- WebSockets
Python · Django · Django REST Framework · WebSockets
REST для экранов и списков, WebSocket для чата, звонков и задач в реальном времени.
Инфраструктура
- Google Maps & Places
- OneSignal
- Payme
- Over-the-air updates
- Next.js (landing)
Google Maps & Places · OneSignal · Payme · Over-the-air updates · Next.js (landing)
Качество и инструменты
- TypeScript
- Zod validation
- Three languages: uz, ru, en
TypeScript · Zod validation · Three languages: uz, ru, en
Внутри продукта



Результаты
Результаты ещё измеряются.
Мы публикуем цифры только после того, как они измерены за полный период и одобрены клиентом. А пока — что изменилось:
- Разовая и постоянная работа в одном приложении, с одним аккаунтом и одним мессенджером.
- Заказчик размещает задачу и видит, как ближайший исполнитель её принимает и приближается на карте.
- Опубликовано в App Store и Google Play на узбекском, русском и английском.