Скрипт для приложения доски объявлений

Руководитель Bright Mobile рассказывает о развитии ядра для мобильных досок объявлений.

Недавно писал про то, как мы сделали ядро для приложений с идеей досок объявлений. Рассказываю, что мы поменяли в ядре за четыре месяца и почему.

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

Какие были изменения

Вместе с тем услышал обратную связь, чего было бы неплохо сделать для каждой доски. Для начала напомню, что у нас уже было на середину марта в Sales Board:

  • Список объявлений с фильтрацией по категории.
  • Создание объявления с загрузкой фото.
  • Список своих объявлений.
  • Просмотр объявления с возможностью написать в чат и позвонить по номеру в объявлении.
  • Текстовые переписки.
  • Push-уведомления о новых сообщениях.

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

Что добавилось за четыре месяца:

  • Регистрация и авторизация по SMS (чтобы можно было восстановить доступ при утрате телефона).
  • Сделали «задел» в фильтре объявлений, чтобы легко фильтровать по кастомным полям.
  • Добавили в ленту объявлений и сообщений lazy load, чтобы приложение не подвисало.
  • Звонок в приложении сделали на телефон из профиля, чтобы в объявлении не вводить каждый раз номер.
  • Сделали раздел диалогов.
  • Сделали редактирование профиля пользователя.

Косметические изменения:

  • Причесали внешний вид списка объявлений.
  • Причесали вид объявления.
  • Оптимизировали код до загрузки одного экрана до двух секунд.

Use case

Чтобы понимать необходимый и достаточный объём экранов, мы расписали стандартный use case, который должен быть в ядре. Исходная задача сводится к тому, чтобы сделать приложение, в котором любой человек мог бы зарегистрироваться и выступать как покупатель с возможностью купить товар — и как продавец с возможностью создавать объявления о продаже товара. Товарами могут быть недвижимость, автомобили, услуги — в зависимости от конечной задачи нашего клиента.

Для текущего приложения use case имеет разветвлённую структуру, так как один и тот же пользователь может выступать в двух ролях (покупателя и продавца). Ниже описание каждой роли.

Покупатель

Пользователь на доске объявлении смотрит все предложения, используя фильтр. Для детальной информации заходит в каждое объявление. В случае интереса он связывается с продавцом напрямую по телефону или через внутренний мессенджер. Во втором случае ему потребуется авторизоваться и заполнить свой профиль.

Продавец

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

Структура экранов ядра

1. Начальный экран

Цель экрана: создание профиля в приложении и восстановление доступа.

Скрипт для приложения доски объявлений

Реализация. На экране выводятся:

  • Поле для ввода телефона.
  • Поле для ввода кода.
  • Кнопка «Далее» переводит на экран доски объявлений.

Пользователь вводит номер телефона, на этот номер телефона приходит SMS с кодом. Этот код пользователь указывает в поле для ввода кода и переходит на предыдущий экран.

2. Настройка профиля

Цель экрана: просмотр и редактирование личной информации пользователя.

Скрипт для приложения доски объявлений

Реализация: пользователь заполняет или обновляет данные формы:

  • Загрузка фото.
  • Поле ввода ФИО.
  • Поле ввода информации «О себе».
  • Кнопка «Отправить» сохраняет изменения в профиле.

3. Разместить объявление — выбор категории (доступ после авторизации)

Цель экрана: выбрать соответствующую категорию при создании объявления.

Реализация: когда пользователь нажимает в меню иконку «Разместить», ему открывается экран выбора категории.

  • Категория (выпадающий список).
  • Кнопка «Отправить».

При нажатии на «Отправить» происходит переход на экран заполнения полей объявления.

4. Разместить объявление — заполнение полей (доступ после авторизации)

Цель экрана: создать объявление.

Скрипт для приложения доски объявлений

Реализация: пользователь вносит информацию в поля:

  • Категория (выбрана выше).
  • Загрузка фото.
  • Заголовок.
  • Стоимость.
  • Описание.

Кнопка «Отправить» публикует объявление на доске объявлений.

5. Список объявлений (доступ без авторизации)

Цель экрана: увидеть список всех объявлений.

Скрипт для приложения доски объявлений

Реализация: пользователь видит список всех объявлений приложения в виде списка со следующими полями:

  • Фото.
  • Дата публикации.
  • Заголовок.
  • Стоимость.
  • Категория.

При клике на объявления происходит переход в просмотр объявления.

6. Просмотр объявления (доступ без авторизации)

Цель экрана: просмотр объявления.

Скрипт для приложения доски объявлений

Реализация: пользователю отображается подробная информация об объявлении в виде:

  • Фото.
  • ФИО создателя объявления.
  • Аватар.
  • Кнопка «Позвонить» переводит на функцию набора номера.
  • Кнопка «Написать» переводит в переписку с пользователем.
  • Описание.

7. Мои объявления (доступ без авторизации)

Цель экрана: список опубликованных пользователем объявлений с возможностью их удалить.

Скрипт для приложения доски объявлений

Реализация: аналогично списку всех объявлений, но отфильтрованные по пользователю. Напротив каждого объявления кнопка «Удалить».

Наверху экрана ссылка на профиль, при нажатии которой пользователь переходит на экран «Редактирование профиля».

Кнопка «Настройки» — при нажатии переход на экран «Настройки».

8. Поиск

Цель экрана: найти объявление по подстроке.

Скрипт для приложения доски объявлений

Реализация: пользователь вводит строку, и происходит поиск по всем объявлениям по заголовку и текстовому описанию. Результаты выводятся аналогично списку всех объявлений.

9. Фильтр объявлений

Цель экрана: отфильтровать результаты экрана «Все объявления» по категории.

Скрипт для приложения доски объявлений

Реализация: список категорий с чекбоксами для выбора. Кнопка «Ок» сохраняет выбранные фильтры.

10. Сообщения

Цель экрана: увидеть переписки с другими пользователями.

Скрипт для приложения доски объявлений

Реализация: список переписок в формате:

  • Аватар, с кем переписка.
  • ФИО.
  • Время последнего сообщения.
  • Начало последнего сообщения.

Диалоги отображаются в хронологическом порядке.

11. Переписка с пользователем

Цель экрана: договориться о приобретении товара, описанного в объявлении.

Скрипт для приложения доски объявлений

Реализация: Персональная переписка с другим пользователем. Доступная функциональность:

  • Текстовые сообщения.
  • Отправка фото.

Кнопка «Отправить» приводит к отправке введённого сообщения.

12. Настройки

Цель экрана: показать пользователю разделы приложения.

Скрипт для приложения доски объявлений

Реализация: список ссылок на вложенные разделы:

  • Пользовательское соглашение.
  • О сервисе.

При нажатии на раздел происходит переход к экрану просмотра.

13. Пользовательское соглашение

Цель экрана: показать пользователю юридическую информацию по использованию сервиса.

Реализация: текстовая юридическая информация с правилами использования.

14. О сервисе

Цель экрана: показать пользователю общее описание работы сервиса.

Реализация: текстовая информация о работе приложения.

Какие сделали выводы

Однозначно доска доске рознь. Сейчас у нас в работе проекты досок объявлений о продаже животных, городские аналоги Avito, доска перепродажи подержанных запчастей. У всех этих проектов разные функциональные требования.

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

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

16
48 комментариев