← Назад ко всем проектам

Клиентский проект3 мин чтения

P2P Seller

P2P Seller

Технологии

ReactNodeJSReduxStrategyProjectFrontendMentoringAWSLambda

Услуги

  • →Фронтенд - поиск, фильтрация и процесс бронирования на React + Redux
  • →Бэкенд - логика бронирования и REST API на Node.js
  • →Serverless - AWS Lambda для уведомлений, вебхуков и обновлений доступности
  • →Панель управления для владельцев локаций
  • →Инженерное наставничество, код-ревью и командные практики

Результаты

  • ✓Двусторонний маркетплейс: поиск для продавцов + панель управления для владельцев локаций
  • ✓Календарь доступности в реальном времени для каждой локации с живыми ценами
  • ✓Процесс бронирования из трёх шагов - от поиска до подтверждённого бронирования за минуты
  • ✓Serverless-пайплайн уведомлений и платёжных вебхуков на AWS Lambda
  • ✓UX карточки услуг: услуги, цены, вместимость, фото и отзывы в одном окне

Задача

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

Исследование

Общение с обеими сторонами рынка выявило двустороннюю проблему. Продавцам нужен был быстрый способ находить ближайшие локации под свои требования: вместимость, набор услуг (хранение, упаковка, маркировка), цена за кубический метр и свободные слоты. У владельцев локаций была обратная проблема - их площади нередко простаивали, потому что их было слишком сложно найти. Не хватало прозрачного маркетплейса, соединяющего обе стороны в реальном времени.

Рассмотренные варианты

  1. Модель каталога/объявлений (как листинги на Avito) - отклонено. Статичные объявления устаревают: они не показывают доступность, не ведут бронирование и не создают доверия.
  2. Агрегатор с ручным подтверждением - отклонено. Добавляет задержку в 24 - 48 часов между заявкой и подтверждением; продавцам нужно действовать быстро.
  3. Платформа бронирования в реальном времени по образцу логистики Amazon Seller и UX-паттернов Booking.com - выбрано. Живой календарь доступности, мгновенное ценообразование и бронирование в один клик с подтверждением.

Решение

React + Redux для клиентского интерфейса поиска и бронирования, Node.js для бэкенд-API и логики бронирования, и AWS Lambda для событийных пайплайнов (уведомления, обновления доступности, подтверждения бронирований). Цель по UX была сформулирована явно: продавец должен уметь найти локацию, увидеть все нужные детали и завершить бронирование, не покидая экрана.

Реализация

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

Владельцы локаций получают панель управления: обновление доступности, установка цен по услугам, обработка бронирований и просмотр аналитики загрузки. AWS Lambda берёт на себя асинхронную часть - письма с подтверждением бронирования, пересчёт доступности после бронирования и обработку платёжных вебхуков. В ходе разработки я наставлял младших инженеров, проводил еженедельные код-ревью и внедрил стандарты PR, что заметно снизило долю регрессий.

Результат

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

Обзор сайта

Обзорное видео с возможностями сайта.

За кадром

Примерно так выглядело начало празднования Нового года. Часть команды была в США, часть в Турции, часть в России: угадайте, кто где. Из-за военной обстановки в России всей команде пришлось разъехаться по разным городам и странам, чтобы продолжать работать. Лица и имена коллег скрыты.

Видеозвонок команды: у двух коллег скрыты лица и имена, я в арафатке
Тот же звонок чуть позже, коллеги по-прежнему скрыты
Созвон команды из трёх стран

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

Ежедневный созвон по статусу на шесть человек с телефона, все участники кроме меня размыты
Ежедневный созвон по статусу

Проекты

ROXL - портфолио, блог и каталог ИИ-решений на трёх языках

ROXL - портфолио, блог и каталог ИИ-решений на трёх языках

До: у кейсов, статей и ИИ-решений не было общего дома, и каждое добавление означало ручную работу на каждом языке. После: сайт на Next.js на трёх языках, где новый кейс или статья, часто написанные вместе с coding-агентом, выходят одним коммитом.

Q-BitX, постквантовый биткоин: майнинг-пул, кошелёк и нода

Q-BitX, постквантовый биткоин: майнинг-пул, кошелёк и нода

До: новый постквантовый блокчейн на Proof-of-Work без запущенных нод, без пула и без простого способа подключиться. После: первая нода в сети, Stratum-пул на Go в бета-версии на pools.qbitx.org, доработанный кошелёк и быстрый старт ноды в Docker под macOS.

MEV-боты - исследования и разработка в Ethereum

MEV-боты - исследования и разработка в Ethereum

До: паттерны MEV-атак в Ethereum были чёрным ящиком, и строить бота приходилось наугад, не зная, как ведут себя контракты и пулы. После: проверенная связка на Hardhat, Foundry и тестовой сети Sepolia, ответы от контрибуторов Artemis и паттерны стратегий, переданные обратно в Artemis и mev-template-rs.

Открыт для работы по контракту

Я доступен для работы по контракту. Если у вас есть интересная идея проекта, запишитесь на звонок через Calendly.

Записаться на 30-минутный звонок