e-GTO.ru АвтоуслугиМаркетплейсы и сервисы Laravel

e-GTO.ru: платформа онлайн-записи на техосмотр с нуля

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

Срок: 57 дней Бюджет: не разглашается
Карта пунктов техосмотра: кластеры, список результатов и фильтр по городу

Результат в цифрах

Пунктов техосмотра в каталоге
Excel-файл3 904карточки
89 регионов, 11 категорий транспорта
Отдача страницы пункта
0,28секунды
серверная отрисовка, страницы индексируются
Автотестов
02 519тестов
плюс 0 ошибок статического анализа
Монетизация
отсутствовалаБиллинг
кошельки, комиссия 20 %, счета, подписки
Экранов интерфейса
53экрана
23 админка, 21 кабинет, 9 публичных
Срок промышленной версии
26дней
при нормативной трудоёмкости 4 720 часов

Стек проекта

Laravel 12 PHP 8.3 PostgreSQL 16 + PostGIS Redis Nuxt 3 Vue 3 TypeScript Pinia Docker Nginx Pest Vitest PHPStan k6 GitHub Actions ЮKassa i-Dgtl DaData Яндекс.Карты Bitrix24

Исходная ситуация

Автовладелец ищет «техосмотр рядом» и попадает на десятки разрозненных сайтов отдельных пунктов: звонит, уточняет цену и свободное время. Часть сайтов не обновлялась годами — телефон не отвечает, адрес устарел.

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

Что сделали

Собрали платформу, которая сводит обе стороны в одном месте: каталог из 3 904 пунктов на карте с фильтрами по городу и категориям транспорта, онлайн-запись по реальным свободным слотам, подтверждение телефона кодом.

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

Автоматизация

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

Заявки автоматически уходят владельцу в Bitrix24 или на его сервер по API — с шестью попытками повтора при сбоях и журналом доставки. Каждая заявка подтверждена кодом: мусорных обращений пункт не получает.

Автовладелец ищет техосмотр звонками, пункт ТО покупает рекламу без гарантии результата. e-GTO.ru свёл обе стороны в одном сервисе: 3 904 пункта на карте, запись за пару минут, оплата за подтверждённое обращение. Разбираем, как двусторонний рынок с биллингом и двумя кабинетами собрали с нуля за 57 дней.

Что это за продукт

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

Работает как два рынка в одном окне. С одной стороны — люди, которым нужно пройти техосмотр. С другой — пункты ТО, которым нужны клиенты. До появления сервиса обе стороны искали друг друга вслепую.

Проблема с двух сторон

Автовладелец

Человек ищет «техосмотр рядом» и попадает на десятки разрозненных сайтов отдельных пунктов: звонит, уточняет цену и свободное время. Часть сайтов не обновлялась годами — телефон не отвечает, адрес устарел. Сравнить пункты между собой негде.

Владелец пункта ТО

Пункт техосмотра — небольшой локальный бизнес. Клиентов он получает сарафанным радио и платной рекламой. Размещение в агрегаторах стоит денег вперёд и не даёт гарантии обращений. Отдельная боль — «мусорные» заявки: человек оставил номер и не пришёл, а пункт потратил на него время.

Карточка реального пункта техосмотра: адрес, контакты, категории транспорта и стоимость по реестру
Карточка реального пункта техосмотра: адрес, контакты, категории транспорта и стоимость по реестру

Как работает сервис

Сценарий автовладельца

  1. Находит. Из поиска («техосмотр в Твери») попадает сразу на страницу конкретного пункта или на карту страны.
  2. Выбирает. Двигает карту — список обновляется под видимой областью. Фильтрует по городу и категории транспорта.
  3. Смотрит карточку. Адрес, режим работы, категории, фотографии, отзывы и ответы владельца, рейтинг.
  4. Записывается. Выбирает дату и время из реальных свободных слотов: шаг 30 минут, запись доступна на 60 дней вперёд.
  5. Подтверждает телефон. Вводит имя и номер, получает код. Это отсекает случайные заявки.
  6. Получает подтверждение. Заявка мгновенно уходит владельцу пункта.
Форма онлайн-записи: свободные слоты по реальному графику пункта, шаг 30 минут
Форма онлайн-записи: свободные слоты по реальному графику пункта, шаг 30 минут

Сценарий владельца пункта

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

60 дней

запись открыта вперёд от текущей даты

30 минут

шаг свободных слотов в графике пункта

11

категорий транспорта в фильтрах каталога

2

кабинета: владельца пункта и администратора платформы

Бизнес-модель

Владелец пункта не платит за размещение карточки — только за результат. Это снимает главное возражение малого бизнеса: «заплатил вперёд и не получил клиентов».

  • Комиссия с обращений — 20 % от стоимости услуги. Списание с кошелька в момент, когда владелец получил подтверждённое обращение.
  • Платное размещение контактов — от 1 000 ₽/мес в регионах, 3 000 ₽/мес в Москве и Санкт-Петербурге. Год — по цене десяти месяцев, с автопродлением.
  • Счета для юрлиц — безналичная оплата с закрывающими документами для сетей пунктов.

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

1 500 – 5 000 ₽

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

660 000 ₽

выручка в месяц при 300 владельцах и 1 500 подтверждённых обращениях

≈ 21 месяц

возврат вложений в разработку при такой выручке

Как строили: два этапа вместо одного

Проект не делался «одним заходом». Первый месяц ушёл на проверку спроса, второй — на промышленную пересборку.

Этап 1. Быстрый запуск (28 июля — 27 августа)

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

Результат этапа: работающий сайт, первые обращения, понимание реальных требований бизнеса.

Этап 2. Промышленная пересборка (28 августа — 23 сентября)

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

Перед разработкой провели аудит кода — построчно разобрали первую версию и зафиксировали слабые места (в том числе фальшивые данные: рейтинги и отзывы генерировались случайными числами). Написали техническое задание на 1 121 строку требований, утвердили шесть архитектурных решений и разбили работу на десять спринтов.

Дальше — 26 календарных дней плотной работы. Спринты шли параллельно: пока бэкенд делал биллинг, фронтенд собирал кабинет; пока инфраструктура настраивала деплой, QA проверял готовые модули.

Хронология проекта

28 июляСтарт работ. Первая версия на чистом PHP: карта, каталог, форма записи. Данные — в Excel-файле, базы данных нет.
27 августаРаботающий сайт и первые обращения. Стало ясно: Excel-файл не выдержит роста, ручные правки тормозят проект.
28 августаАудит кода первой версии, техническое задание на 1 121 строку требований, шесть архитектурных решений, десять спринтов.
26 днейПромышленная пересборка: Laravel 12, PostgreSQL с PostGIS, Nuxt 3, Docker. Спринты идут параллельными потоками.
23 сентябряЗапуск: биллинг и кошельки, два кабинета, интеграции, юридический блок. Все десять спринтов выкачены на рабочий сервер.

Что изменилось после пересборки

Параметр Первая версия Промышленная платформа
Хранение данных Excel-файл, правки вручную PostgreSQL + PostGIS: 49 таблиц, 81 миграция
Технологии Чистый PHP Laravel 12, Nuxt 3, TypeScript, Docker
Автотесты 0 2 519 тестов, 0 ошибок статического анализа
Монетизация Отсутствовала Кошельки, комиссия 20 %, счета, подписки
Управление Через программиста Админка на 23 экрана: модерация, тарифы, аналитика
Данные о пунктах Рейтинги генерировались случайными числами Реальные отзывы, ответы владельцев, жалобы
Документы Не было Политика по 152-ФЗ, оферта, журнал согласий с версиями

Что именно сделано

Публичная часть

Девять публичных экранов: главная с картой и списком, страницы пунктов, форма записи, партнёрский лендинг, раздел «Владельцам», обратная связь, документы.

  • Каталог с картой, фильтрами, поиском и бесконечной прокруткой списка.
  • Серверная отрисовка страниц пунктов ТО — их видят поисковые системы, время ответа 0,28 секунды.
  • Онлайн-запись со свободными слотами по реальному графику работы пункта.
  • Подтверждение телефона через виджет верификации — во всех формах: заявка, отзыв, обращение, смена номера.
  • Юридический блок: политика обработки данных по 152-ФЗ, оферта, условия, реквизиты оператора.
Мобильная версия карты пунктов техосмотра
Мобильная версия карты пунктов техосмотра
Мобильная версия карточки пункта техосмотра: адрес, категории и цены
Мобильная версия карточки пункта техосмотра: адрес, категории и цены

Кабинет владельца пункта — 21 экран

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

Админка платформы — 23 экрана

Дашборд, аналитика заработка с прогнозом, модерация карточек с построчным сравнением «было / стало», разбор претензий между владельцами, сетка тарифов по 89 регионам и 11 категориям с версионированием, финансы, пользователи и права доступа, журнал действий администраторов, рассылки и обращения.

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

Ключевые решения и почему именно так

Laravel и Nuxt вместо «продолжить на PHP»

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

PostgreSQL с расширением PostGIS

Пункты ТО — это точки на карте. Обычная база ищет «все пункты в радиусе 5 км» медленно. PostGIS делает это мгновенно за счёт пространственных индексов: когда пользователь двигает карту, список пересчитывается на лету.

Карточки рендерятся на сервере

Страницы пунктов — главный источник бесплатного трафика из поиска. Поисковые системы плохо читают сайты, которые собираются в браузере, поэтому карточки отдаются готовым HTML: 0,28 секунды на ответ, страницы попадают в индекс.

Подтверждение телефона обязательно

Главная боль владельца пункта — мусорные заявки. Если заявку можно отправить с любого номера без проверки, пункт получает «левые» обращения и перестаёт доверять платформе. Поэтому подтверждение кодом встроено во все формы.

Комиссия, а не подписка

Модель «плати за размещение» не работает с малым бизнесом: владелец не готов платить вперёд за непонятный результат. Комиссия за подтверждённое обращение снимает риск для него и одновременно мотивирует платформу приводить качественный трафик — нет обращений, нет заработка.

Инженерная часть — то, что обычно не видно

  • Архитектура. Код разделён на слои: бизнес-логика не зависит от базы данных и фреймворка. Архитектурный тест автоматически запрещает слою бизнес-правил обращаться к инфраструктуре.
  • Деньги в копейках. Все суммы — целые числа, ошибки округления исключены.
  • 2 519 автотестов. 1 209 на бэкенде и 1 310 на фронтенде, плюс строгая проверка типов без единой ошибки.
  • Полный цикл тестирования. Девять уровней проверки, 68 найденных и устранённых дефектов до выпуска.
  • Документация. 62 документа: архитектура, эксплуатация, восстановление после сбоя, описание API, регламенты.
  • Интеграции. Восемь внешних сервисов: карты, проверка адресов и телефонов, платежи, SMS-подтверждение, почта, CRM.
  • Безопасное обновление. Каждая версия собирается в отдельный образ, старая остаётся точкой отката; выкат идёт без остановки сервиса.

Как устроена система

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

PresentationКонтроллеры и ресурсы API — 219 методов с версионированием
ApplicationСценарии: «подтвердить заявку», «списать комиссию», «отправить лид в CRM»
DomainБизнес-правила: деньги в копейках, пороги биллинга, политики доступа
InfrastructurePostgreSQL + PostGIS, Redis, очередь, внешние сервисы — 8 интеграций

196 412

строк кода — приложение, тесты и конфигурация

219

методов API и 49 таблиц базы данных

2 519

автотестов: 1 209 на бэкенде, 1 310 на фронтенде

1 047

изменений за проект, сведённых в 134 набора правок

62

документа: архитектура, эксплуатация, восстановление, API

10

сервисов в Docker: приложение, база, кэш, очередь, почта, хранилище

Результаты

Заказчик получил действующий бизнес-инструмент, а не «сайт»: платформа принимает деньги, продаёт размещение, сама собирает клиентов из поиска и управляется из браузера без программиста.

  • 3 904 пункта техосмотра в каталоге по 89 регионам.
  • 53 экрана интерфейса: админка, кабинет владельца, публичная часть.
  • 219 методов API и 49 таблиц базы данных.
  • 0,28 секунды на отдачу страницы пункта.
  • 2 519 автотестов и ноль ошибок статического анализа.
  • 26 дней на промышленную версию при нормативной трудоёмкости 4 720 человеко-часов.

Трудоёмкость и сроки

Объём работ — 4 720 человеко-часов, или 674 человеко-дня. Команда из шести человек при обычном графике 10:00–⁠18:00 закрывала бы такой объём 5,2 месяца. Работа шла параллельными потоками поверх готового технического задания, поэтому промышленная версия вышла за 26 календарных дней.

5,2 месяцанормативный срок команды из шести человек: 674 человеко-дня при графике 10:00–⁠18:00
26 днейфактический срок выпуска промышленной версии: параллельные потоки, готовое ТЗ и зафиксированная архитектура

4 720

человеко-часов трудоёмкости проекта

674

человеко-дня — 31,5 человеко-месяца работ

12,4 – 14,2 млн ₽

стоимость такого сервиса по рыночным нормам: команда из шести человек

8 – 18 млн ₽

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

Честно о точках роста

Проект не «идеален и готов» — у него есть понятный резерв развития, и заказчик знает о нём:

  • SMS-рассылки. Канал у провайдера открыт не полностью: подтверждение идёт через виджет, для массовых уведомлений нужно расширение прав.
  • Мобильное приложение. Сейчас это мобильная версия сайта; приложение — следующий шаг для удержания.
  • Уникальность описаний. Часть карточек унаследована из старой базы с типовыми описаниями — рост уникальности даст дополнительный трафик.
  • Другие CRM. Поддержаны Bitrix24 и универсальный API; amoCRM и 1С — в бэклоге.

Что забрали в другие проекты

  • Сначала проверить спрос, потом строить промышленно. Месяц на простом стеке дал ответы, которые не получить из брифа: какие города нужны, как реагируют владельцы, какая конверсия.
  • ТЗ и архитектурные решения до кода. 1 121 строка требований и шесть зафиксированных решений убрали этап «переделываем, потому что не подумали».
  • Параллельные потоки вместо последовательных. Именно они дали 26 дней там, где по нормам нужно 5,2 месяца.
  • Платить за результат, а не за размещение. Для малого бизнеса это единственная работающая модель входа.

Частые вопросы

Сколько стоит разработка такого сервиса?

По рыночным нормам — 4 720 человеко-часов, или 12,4–⁠14,2 млн ₽ при команде из шести человек. Агентство «под ключ» оценило бы такой объём в 16–⁠18 млн ₽, фриланс-команда — в 8–⁠9,5 млн ₽. Сервис такого класса отличается от «сайта за 300 тысяч» наличием биллинга, двух кабинетов, подтверждения телефона и 2 519 автотестов.

Сколько времени занимает разработка маркетплейса?

Нормативный срок для команды из шести человек — около 5,2 месяца. В этом проекте промышленная версия заняла 26 календарных дней: работа шла параллельными потоками, поверх готового технического задания и зафиксированной архитектуры.

Зачем маркетплейсу подтверждение телефона?

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

Почему карточки пунктов рендерятся на сервере?

Страницы пунктов — основной источник бесплатного трафика из поиска. Поисковые системы плохо читают сайты, которые собираются в браузере, поэтому карточки отдаются готовым HTML: время ответа 0,28 секунды, страницы индексируются, а платформа не покупает трафик.

Проект сделан в рамках услуг «Создание сайтов под ключ» и «Программирование и доработка сайтов». Если у вас похожая задача — двусторонний рынок, личный кабинет или биллинг — напишите нам, посчитаем объём.

Хотите такой же результат?

Начнем с аудита точек роста — покажем, где у вашего сайта утекает трафик.

Получить аудит точек роста