Сайт логистики с нуля: PHP, админка и бот, что читает бумаги
В августе 2024 владелец логистики из Днепра показал сайт и офис. На сайте 30 маршрутов. На стене в офисе 400. Он правил маршруты звонком племяннику. Новости жили как Word на рабочем столе. Водители звонили диспетчеру за каждой бумагой: цена, окно, док. Я предложил одну сборку: PHP без CMS, одна админка для всего, что владелец трогает ежедневно, и Telegram-бот, что отвечает водителям из тех же таблиц. Он спросил срок. Я сказал три недели. Мы вышли за 19 дней.
Скриншот админ-дашборда 2024-08-29: таблица маршрутов 412 строк, модалка цены, очередь SEO-статей 8 черновиков, лог Telegram-бота 214 запросов.
Проблема в одном абзаце
Владелец ведёт цену за километр, что движется еженедельно, таблицу маршрутов, что растёт ежедневно, и SEO-статьи, что должны выходить, чтобы греть воронку. Старый сайт требовал разработчика на каждую смену цены. Водители требовали человека на каждую проверку бумаг. Новости не выходили, потому что ждали вёрстки. Нужна сборка, где владелец правит сам, а водители спрашивают бота, а не человека.
Что я собрал
Я собрал чистый PHP с приватной админкой на /admin без публичного следа CMS. Четыре таблицы несут бизнес: маршруты с парами городов и ценой, медиа с картинками и SEO-полями, статьи со статусом draft→published и кроном, что публикует по дате, и inbox бота, что пишет каждый запрос водителя и ответ. У админки одна страница на каждую вещь, что владелец правит: маршруты, цена за км, контакты, баннер и новости. Каждое сохранение пишет ту же таблицу, что читают сайт и бот. Без копий.
Публичный сайт рендерит маршруты как датасет с фильтром по городу, новости как SEO-страницы на /articles, картинки с alt, что владелец пишет в админке. Telegram-бот читает ту же таблицу маршрутов, отвечает цену и окно и падает на диспетчера, когда не находит страницу. Я показываю этот предел нарочно и разбираю довод в посте Glass-box AI: показываю уверенность модели чтобы люди доверяли. Позже я добавил хук OpenClaw omni-channel, чтобы тот же ответ уходил в Viber и веб-чат. Бот для водителей вырос из того же порядка шагов, что я даю боту лидов в посте Соберите AI-агента, который обрабатывает лиды за 48 часов.
- Админ сохраняет цену и баннер меньше чем за 30 секунд. Владелец выучил за один созвон.
- Таблица маршрутов держит 400+ строк без лага пагинации, потому что я рендерю фильтр на клиенте из JSON-дампа с кэшем пять минут.
- Очередь статей даёт владельцу написать восемь черновиков в воскресенье и публиковать по одному в день без меня.
- Бот закрывает 70% проверок бумаг водителей, замер на 214 запросах в первую неделю.
- Sitemap обновляется на каждое сохранение в админке, Google видит новые маршруты без ручного шага.
Числа, что важны
Время смены цены упало с двух дней ожидания разработчика до 28 секунд в админке. Новости с нуля за три месяца до восьми отложенных постов за неделю. Звонки водителей диспетчеру упали на 31% за две недели. Сборка стоила один проектный гонорар без подписки, владелец ведёт её сам с запуска. Иногда такая админка становится продуктом на подписке: путь к $3K MRR разбираю в посте Микро-SaaS для локального бизнеса: от $0 до $3K MRR за 90 дней.
Когда сборка подходит
Сборка подходит, когда владелец правит ежедневно, данные приносят деньги, и команда — один человек плюс водители. Не подходит, когда нужны роли и учёт складов. Тогда я беру Supabase с правилами строк. Для логистического стола, что живёт на маршрутах, ценах и бумагах, PHP с одной админкой и одним ботом всё ещё выходит быстрее.
Что бы скопировал
Дай владельцу одно место правки на каждую еженедельную вещь. Пиши ответ бота из той же строки, что показывает сайт. Поставь очередь новостей на неделю. Смотри, где владелец экономит время первым. Это твоя следующая фича.