Скрипт для приложения доски объявлений
Руководитель 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, доска перепродажи подержанных запчастей. У всех этих проектов разные функциональные требования.
Важно учитывать, что в ядре нужно выпускать только общую для всех проектов функциональность — чем проще, тем лучше. Вместе с тем это ядро приложений должно быть максимально легко дорабатываемым под индивидуальные проекты и легко интегрируемым в сайт.
Напишите мне по контактам в профиле — помогу спроектировать приложение для вашей доски, а для себя услышу обратную связь, какая ещё функциональность часто востребована и нужна в ядре.