О проекте

OneTwoDo — маркетплейс локальных услуг, где пользователи размещают и просматривают объявления о повседневных услугах — уборка, ремонт, покраска, сантехника, переезды, красота и другое — и напрямую связываются с исполнителями поблизости. Продукт разработала наша команда, от начала до конца: дизайн продукта, Flutter-клиент и всё, на чём приложение работает.

Экран входа

Экран входа

Лента объявлений

Лента объявлений

Категории услуг

Категории услуг

Мастер создания поста — тип поста

Мастер создания поста — тип поста

Мастер создания поста — локализованное описание

Мастер создания поста — локализованное описание

Без команды бэкенда

Двусторонний маркетплейс обычно подразумевает команду бэкенда раньше, чем что-либо ещё: аккаунты, сессии, базу данных для объявлений и профилей, хранилище файлов для фотографий и сервер, за которым всё это стоит, — ещё до того, как кнопка «Зарегистрироваться» сможет сделать хоть что-то реальное. Именно на разработку и поддержку этого слоя обычно уходит время и бюджет небольшой команды — ещё до того, как дело доходит до самого продукта.

OneTwoDo вышел без единой строчки этого слоя. Firebase заменил собой весь бэкенд целиком — Authentication для аккаунтов и сброса пароля, Cloud Firestore для объявлений и профилей, Cloud Storage () для фотографий, Analytics и Crashlytics — там, где команда обычно строит собственные дашборды ради наблюдаемости. Ничего из этого не требовало развёртывания серверов, установки патчей или дежурств on-call — именно это позволило нашей команде одновременно вести дизайн продукта, Flutter-клиент и «бэкенд», уложившись в семь недель.

Что это дало

Экономия проявлялась не только на старте — она возникала каждый раз, когда фиче требовалась поддержка со стороны бэкенда. Мультивалютные цены в фиате и криптовалюте, локализованные описания для каждого объявления, лента объявлений с фильтрацией по языку и локации — обычно каждая из этих задач сначала становится тикетом для бэкенда и только потом для клиента. Здесь это была работа исключительно на стороне клиента поверх уже готового слоя данных — так мастер создания объявления (тип, описание, локация, цена, категория, фотографии) добирался от идеи до готового экрана за время, которое в другом проекте ушло бы на одну только спецификацию бэкенда, а это напрямую сокращает .

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

Офлайн-режим демо

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

Результаты

С Firebase вместо той команды бэкенда, которая иначе понадобилась бы продукту, наша команда довела проект до рабочего кроссплатформенного маркетплейса — аутентификация по email/паролю со сбросом пароля, загрузка аватара со сжатием изображения на устройстве, полная локализация на английский и русский, раздел FAQ — за семь недель, от пустого репозитория до полностью готового к публикации приложения.

Итог проекта в цифрах:

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

FAQ

OneTwoDo — приложение-маркетплейс локальных услуг, созданное для Perform Connect Studios S.L.: пользователи размещают и просматривают объявления о повседневных услугах — уборка, ремонт, покраска, сантехника, переезды, красота и другое — и напрямую связываются с исполнителями поблизости. Мы сделали продукт от начала до конца: дизайн, Flutter-клиент для iOS и Android и всё, на чём приложение работает.
Firebase заменил собой весь бэкенд-слой: Authentication для аккаунтов и сброса пароля, Cloud Firestore для объявлений и профилей, Cloud Storage для фотографий, Analytics и Crashlytics для операционной наблюдаемости. Ничего из этого не требовало развёртывания, патчей или дежурств on-call — именно это позволило одной команде одновременно вести дизайн продукта, Flutter-клиент и бэкенд.
Семь недель от пустого репозитория до полностью готового к публикации приложения — включая дизайн продукта, аутентификацию по email/паролю со сбросом пароля, мультивалютные объявления, локализацию на английский и русский и загрузку фотографий со сжатием на устройстве. Такой календарь стал возможен именно благодаря отказу от собственного бэкенда.
Выигрыш — скорость и стоимость: функции, которые обычно сначала становятся тикетом для бэкенда, превращаются в клиентскую работу поверх уже готового слоя данных, а счёт растёт вместе с использованием, а не как фиксированная плата за сервер. Честные ограничения — привязка к вендору и модель запросов Firestore, которая вознаграждает проектирование данных под то, как их читают экраны. Подходит ли такая архитектура конкретному маркетплейсу — вопрос скоупинга; экономной сборке для проверки гипотезы вроде OneTwoDo она подошла идеально.
В OneTwoDo встроен самодостаточный слой данных в памяти, который подменяет собой Firebase и отдаёт заранее заполненные объявления, профили и рабочую ленту. Всё приложение можно изучить от и до, не обращаясь к сети, — поэтому ревьюеры сторов и потенциальные клиенты проходят продукт целиком без учётных данных и живого бэкенда.

OneTwoDo — это то, как разработка MVP выглядит на практике: первый релиз, собранный под один вопрос и выпущенный сразу в оба стора. Он же — опорный проект нашей страницы разработки приложений-маркетплейсов, которая рассказывает ту же историю с двусторонней стороны.