LP Agency

PWA, чаты, платежи и интеграции

О проекте

Сфера:
услуги и маркетплейс
Тип проекта:
PWA-платформа для поиска специалистов
Рынок:
Турция
Технологии:
Next.js, NestJS, PostgreSQL, Prisma
Интеграции:
Stripe, Resend, Infobip, Google, Facebook, Apple, OpenStreetMap, Web Push
Сайт:

spec1

Разработали PWA-платформу для поиска специалистов и получения различных услуг в Турции. Проект ориентирован в том числе на русскоязычных эмигрантов, которым необходимо найти проверенного специалиста или исполнителя на месте.

По своей модели это полноценный marketplace: пользователь выбирает нужную категорию, ищет специалиста по языку, локации и другим параметрам, изучает профиль и может начать общение непосредственно через платформу.

Для специалистов предусмотрена собственная бизнес-модель: первые обращения доступны бесплатно, а дальнейшее открытие чатов оплачивается из внутреннего баланса.

Задача

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

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

Готовый дизайн предоставил заказчик. Наша задача заключалась в его реализации, разработке frontend и backend, интеграции внешних сервисов, настройке серверной инфраструктуры и запуске проекта.

Архитектура и разработка

Frontend разработали на Next.js, backend — на NestJS. В качестве базы данных используется PostgreSQL, работа с данными организована через Prisma.

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

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

spec4

Две роли и личные кабинеты

В платформе предусмотрены две основные роли:

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

После регистрации пользователь может выбрать соответствующую роль и заполнить профиль.

Для специалиста доступны данные о языках, местоположении, категориях услуг, информации о себе, рейтинге и других параметрах, необходимых для поиска.

Поиск специалистов

Основой платформы стал каталог специалистов с фильтрацией.

Пользователь может искать исполнителей с учётом:

  • категории услуги;
  • языка;
  • местоположения;
  • рейтинга.

После выбора специалиста открывается его профиль с подробной информацией и отзывами.

Категории при этом охватывают широкий спектр услуг. Среди них недвижимость и бытовые услуги, юридическая помощь и ВНЖ, красота и здоровье, транспорт и логистика, образование и услуги для детей, работа и IT, туризм и отдых, еда и товары.

То есть платформа не ограничена одной профессиональной нишей и может использоваться для поиска самых разных специалистов в Турции.

Чаты с платным открытием

Одной из ключевых особенностей проекта стала модель общения через платные чаты.

Клиент может начать обращение к специалисту, после чего тот получает уведомление о новом сообщении. Само содержимое сообщения при этом скрыто до открытия чата.

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

Таким образом, коммуникация непосредственно связана с монетизацией платформы:

обращение клиента → уведомление специалиста → открытие чата → списание средств с баланса.

Для реализации чатов использовали WebSocket/Socket.IO, что позволяет обмениваться сообщениями непосредственно внутри платформы.

Баланс и Stripe

Для специалистов реализовали внутренний расчётный баланс.

Пополнение происходит через Stripe, после чего средства могут использоваться для оплаты открытия чатов.

В системе также предусмотрена история операций, чтобы специалист мог отслеживать движения средств.

Таким образом, платежная часть связана непосредственно с основной механикой marketplace, а не является отдельным модулем оплаты услуг.

spec3

Авторизация и внешние сервисы

В платформу интегрировали несколько внешних сервисов.

Infobip используется для SMS-подтверждения номера телефона и OTP-кодов.

Resend отвечает за транзакционную email-коммуникацию.

Для авторизации реализовали вход через Google, а также подготовили интеграции с Facebook и Apple. Последние в текущей версии временно скрыты, но технически реализованы.

Отдельно подключили браузерные Web Push-уведомления, чтобы пользователи могли получать уведомления о событиях платформы непосредственно через браузер.

Геолокация и карты

Для работы с местоположением использовали OpenStreetMap.

На его основе реализованы:

  • определение и выбор локации;
  • геокодирование;
  • работа с адресами;
  • привязка специалистов к местоположению;
  • поиск специалистов с учётом региона.

Это особенно важно для сервиса, где физическое расположение специалиста часто является одним из основных критериев выбора.

PWA

Платформу реализовали как Progressive Web App.

Пользователь может работать с сервисом непосредственно из браузера, а PWA-механика позволяет использовать его более привычным для мобильных приложений способом.

В проекте также реализованы push-уведомления через сервисные worker’ы.

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

Рейтинги, отзывы и жалобы

После взаимодействия пользователи могут оценивать специалистов и оставлять отзывы.

Рейтинг отображается в профиле и используется как один из параметров при выборе исполнителя.

Также реализован механизм жалоб на специалистов. Это позволяет пользователям сообщать о проблемах, а администрации — обрабатывать такие обращения.

spec6

Административная часть

Для управления платформой разработали административную часть.

Она позволяет работать с основными сущностями сервиса:

  • пользователями;
  • специалистами;
  • категориями;
  • жалобами;
  • модерацией;
  • операциями и другими данными платформы.

Отдельно разработали страницу управления категориями услуг — через неё можно создавать и редактировать структуру категорий и направлений.

Сервер и запуск

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

Настроили серверное окружение, развернули frontend и backend, подключили базу данных и необходимые сервисы, настроили домен и SSL-сертификат.

Также подключили внешние интеграции, необходимые для работы авторизации, SMS, почты, платежей, карт и push-уведомлений.

Результат

В результате разработали полноценный marketplace для поиска специалистов в Турции с собственной системой коммуникации и монетизации.

В платформе реализованы:

  • регистрация и авторизация;
  • роли клиента и специалиста;
  • личные кабинеты;
  • профили специалистов;
  • категории и направления услуг;
  • поиск и фильтрация;
  • рейтинги и отзывы;
  • чаты в реальном времени;
  • платное открытие чатов;
  • бесплатный лимит первых обращений;
  • внутренний баланс специалиста;
  • платежи через Stripe;
  • история операций;
  • SMS-подтверждение через Infobip;
  • транзакционная почта через Resend;
  • OAuth через Google, Facebook и Apple;
  • геолокация и карты на базе OpenStreetMap;
  • Web Push;
  • PWA;
  • жалобы и модерация;
  • административная часть;
  • управление категориями;
  • мультиязычный интерфейс на русском и английском языках.

Проект полностью развернут на сервере, подключен к домену и доступен пользователям по адресу onliners.app.