Перейти к содержимому
SwiftCore
Все проекты

GUDS

Кейс · 2026

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

Клиент
GUDS
Отрасль
Работа и услуги
Услуги
Мобильное приложение, бэкенд, подбор в реальном времени, интеграция платежей, лендинг
Платформы
iOS, Android, сайт
Сроки
2026 — продолжается
Пять экранов GUDS в ряд: выбор между поиском работы и поиском исполнителей, главная заказчика, главная суперприложения, главная исполнителя с кнопкой «Выйти на линию» и карта исполнителя
Главные экраны заказчика, суперприложения и исполнителя в GUDS
Рис. 1 — Экраны текущей версии приложения GUDS.

Обзор

GUDS соединяет тех, кому нужна работа, с теми, кому нужны работники, в Узбекистане. В одном приложении четыре продукта: соискатели смотрят вакансии и откликаются с резюме; работодатели публикуют вакансии и ищут резюме; заказчик размещает разовую задачу, и приложение находит исполнителя поблизости; исполнители выходят на линию и получают такие задачи в реальном времени. Всех связывает мессенджер. Мы сделали кроссплатформенное приложение на React Native, бэкенд на Django и лендинг guds.inc. Приложение доступно в App Store и Google Play, начиная с Ташкента.

Задача

Разовую работу в Ташкенте договариваются по телефону и в чатах, постоянную ищут на сайтах вакансий. Заказчик с задачей на сегодня не видит, кто свободен рядом, а исполнитель не видит, что предлагают поблизости. Приложение должно было работать для обеих сторон обоих рынков — и сделать разовую задачу такой же быстрой, как вызов такси.

  1. C1

    Четыре приложения в одном

    У соискателей, работодателей, заказчиков и исполнителей разные экраны и сценарии, но общий вход, профиль и мессенджер.

  2. C2

    Реальное время на телефоне

    Предложения, отслеживание и чат должны выдерживать слабую мобильную сеть, уход приложения в фон и ограничения батареи.

  3. C3

    Три языка

    Каждый экран на узбекском, русском и английском, узбекский — по умолчанию.

Наш подход — журнал решенийЖурнал решений

Одно приложение, четыре продукта — у каждого своя навигация, но общие аккаунт, чат и бэкенд. Ниже — решения, которые сформировали систему, и цена каждого из них.Решения, которые сформировали систему, и цена каждого из них.

№РешениеПочемуПринятый компромисс
D1Оболочка суперприложения, переключающая навигаторы мини-приложений.Одна установка и один вход для четырёх продуктов и место для доставки, магазина и еды без нового приложения.У каждого мини-приложения своя навигация и кэш, и их согласованность требует внимания.
D2Подбор как в такси через WebSocket: исполнители передают геопозицию, предложения приходят с обратным отсчётом.Разовая задача должна находить исполнителя за минуты, а заказчик — видеть его приближение на карте.Разрешения на геолокацию, расход батареи и переподключения требуют аккуратности: сокет переподключается с паузами, а экран не гаснет, только пока исполнитель на линии.
D3React Native CLI с нативными модулями и обновлениями «по воздуху» вместо управляемой среды.Звонкам, пуш-уведомлениям, блокировке сна и картам нужен нативный код; исправления JavaScript выходят без ожидания проверки в сторах.Сборки для iOS и Android команда поддерживает сама.
  1. D1

    Оболочка суперприложения, переключающая навигаторы мини-приложений.

    Почему
    Одна установка и один вход для четырёх продуктов и место для доставки, магазина и еды без нового приложения.
    Компромисс
    У каждого мини-приложения своя навигация и кэш, и их согласованность требует внимания.
  2. D2

    Подбор как в такси через WebSocket: исполнители передают геопозицию, предложения приходят с обратным отсчётом.

    Почему
    Разовая задача должна находить исполнителя за минуты, а заказчик — видеть его приближение на карте.
    Компромисс
    Разрешения на геолокацию, расход батареи и переподключения требуют аккуратности: сокет переподключается с паузами, а экран не гаснет, только пока исполнитель на линии.
  3. D3

    React Native CLI с нативными модулями и обновлениями «по воздуху» вместо управляемой среды.

    Почему
    Звонкам, пуш-уведомлениям, блокировке сна и картам нужен нативный код; исправления JavaScript выходят без ожидания проверки в сторах.
    Компромисс
    Сборки для iOS и Android команда поддерживает сама.

Решение и архитектураАрхитектура

Упрощено · без конфиденциальных деталей

Одно приложение на React Native, API на Django и WebSocket-каналы для чата и задач в реальном времени.

Приложение работает через REST API и держит четыре WebSocket-канала: чаты, звонки, а также сторона заказчика и сторона исполнителя в разовой задаче. Карты и поиск адресов — Google, пуш-уведомления — OneSignal, пополнение кошелька — Payme с возвратом в приложение по deep link.

  • Создано SwiftCore
  • Существующая или сторонняя система
  • Единая точка входа для всех клиентов
Клиент
Приложение iOS
Клиент
Приложение Android
Клиент
guds.inc
Точка входа
Django REST API + WebSocket
Сервис
Разовые задачи и подбор
Сервис
Вакансии и резюме
Сервис
Мессенджер
Сервис
Кошелёк
Данные
База данных
Данные
Каналы реального времени
Внешнее
Google Maps
OneSignal
Payme
Рис. 2 — Упрощённо: приложения, API, основные модули и внешние сервисы.

Технологии

Инструменты, работающие в продакшене этого проекта, и причины, по которым каждый выбран вместо альтернатив.

Фронтенд

  • 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 на узбекском, русском и английском.

Похожая задача?