Логотип FastUp.byFastUp.by

Как я написал свои инструменты на чистом PHP (без БД) и с нуля получил 1500 органики в месяц

Обновлено
Как я написал свои инструменты на чистом PHP (без БД) и с нуля получил 1500 органики в месяц

Всем привет! Меня зовут Егор, я CTO маркетингового агентства FastUp. Как и многие в индустрии, я постоянно пользуюсь сторонними тулзами: конвертерами шрифтов, генераторами JSON-LD, сжималками картинок или интерактивными квиз-калькуляторами на JavaScript.

Всё началось с банальной боли при использовании TinyPNG: обработка на бэкенде, платная подписка, лимиты, ожидание и реклама. Появилась мысль: «Я могу сделать такой же инструмент сам». А следом: «Зачем один, если можно написать целую платформу нужных мне утилит?».

Так родился мой пет-проект — MicroApps.by.

Но делать проект «в стол» было скучно. Я в душе специалист по SEO-продвижению, поэтому решил превратить эту платформу в тестовый полигон. Задача: вывести абсолютно нулевой домен в ТОП по узким техническим запросам, имея 0 бюджета на ссылки и крауд-маркетинг.

Спойлер: я довел проект до 1500 органических визитов в месяц. В этой статье расскажу, почему я отказался от фреймворков и баз данных, как победил сдвиги макета (CLS) и почему провалилась попытка выхода на глобальный рынок.

Выбор поля боя: Яндекс vs Google

Я сразу понимал: бить в лоб мастодонтов с 10-летним трастом — бессмысленно. Ссылочного бюджета у меня нет. Поэтому я сделал ставку на особенности алгоритмов:

  1. Яндекс (поведенческие факторы). Яндексу относительно плевать на возраст домена, если пользовательский опыт идеален. Человек пришел, мгновенно сконвертировал файл, закрыл вкладку (интент удовлетворен). Если инструмент работает быстро, можно залететь в ТОП за две недели.
  2. Google (Core Web Vitals). Стариков нельзя перебить возрастом, но можно перебить качеством кода. Старые сервисы часто неповоротливы. Моя ставка была на идеальную производительность и зеленую зону PageSpeed.

Архитектура: Чистый PHP, Vibe Coding и отказ от БД

Проект был экспериментальным, поэтому главное требование — минимальные затраты на сервер. Node.js отпал сразу (нужен дорогой сервер). Выбор пал на связку Apache + PHP 8.3 (благо, тесты показывали, что по скорости он дышит в спину Go).

Почему не WordPress или Laravel?

Как опытный WP-разработчик, я прекрасно понимал, что WP — это огромный прицеп из бэкенда, БД и плагинов. Добиться на нём идеальных показателей валидаторов крайне сложно. Laravel решил бы проблемы с роутингом, но потянул бы за собой Composer и, опять же, более высокие требования к хостингу.

Самое радикальное решение: полный отказ от Базы Данных (No-DB).

Каждый SQL-запрос — это потеря миллисекунд. Кроме того, администрирование контента в БД потребовало бы написания админки. На тот момент весь текстовый контент для сайта генерировался нейронками (мы использовали VS Code, это было ещё до эпохи Cursor). Тексты писались прямо в структурированные lang-файлы. Файловая система стала нашей базой данных. Это дало моментальный отклик бэкенда.

В итоге ядро, роутинг, хелперы и систему хуков я написал с нуля за пару дней. Чтобы код был читаемым, я позаимствовал нейминг из WordPress (привычные функции вызова header, footer и хуков).

Вся платформа работает через единую точку входа (.htaccess перенаправляет всё на index.php), а самописный роутер сопоставляет URI с кэшированной картой маршрутов (cache/routes.php).

Сама структура каждого сервиса внутри папки services/ предельно минималистична:

В папке самого инструмента лежат только эти 4-5 файлов. Вся магия происходит внутри index.php: он собирает страницу, подключая глобальные переиспользуемые шаблоны. Чтобы вы понимали уровень минимализма и сходства с WordPress, вот реальный код index.php одного из наших сервисов:

Тексты для всех этих компонентов (get_faq, get_content) подтягиваются из локального lang.php, а жесткая микроразметка уже вшита в сами функции вывода.

Это позволяет создавать новые тулзы буквально в «полпромпта». Мы просто копируем папку инструмента, нейронка подменяет тексты в lang.php и логику в module.php, а вся идеальная структура автоматически наследуется из компонентов ядра.

Перфекционизм в SEO и микроразметке

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

Структура строилась на компонентном подходе: каждый инструмент лежал в своей папке, а страница собиралась из шаблонов (Header, Module, FAQ). Главная фишка — в каждый шаблон жестко вшита идеальная микроразметка.

Каждая страница проходила тройную валидацию:

  1. Google Rich Results Test
  2. Schema Markup Validator
  3. Суперстрогий и древний validator.w3.org (ни одной ошибки в семантике HTML).

Мы написали динамический sitemap.xml, который автоматически отдавал поисковикам актуальный lastmod при любом изменении файла на сервере.

А чтобы не было «сиротских» страниц (orphan pages), нейронка при создании каждого нового инструмента вручную генерировала блок перелинковки: ровно 5 ссылок на максимально релевантные тулзы. Никакого рандома, только жесткие графы сущностей.

Tailwind и борьба с Cumulative Layout Shift (CLS)

Google обожает наказывать за прыгающий контент. Чтобы свести CLS к абсолютному нулю, мы использовали Tailwind CSS.

Страницы отдавались сервером с уже прописанными классами и жестко зафиксированными размерами блоков. Никаких inline-скриптов, которые меняют высоту секций после рендера HTML. Сайт загружался на экране мгновенно и монолитно.

 живой отчёт PageSpeed для страницы microapps.by 

Основные показатели:

МетрикаЗначение
Производительность100
Специальные возможности100
Рекомендации96
Поисковая оптимизация100

Детализация:

  • Cumulative Layout Shift (CLS): 0
  • Total Blocking Time (TBT): 50 мс
  • First Contentful Paint (FCP): 0,9 сек
  • Largest Contentful Paint (LCP): 1,2 сек

Дизайн нейросетей и экстремальный перфекционизм скорости

Поскольку целевая аудитория — айтишники, по умолчанию была выбрана тёмная тема. Интерфейс строился по образу современных нейросетей: статичная боковая панель (sidebar) и рабочая область внутри экрана без бесконечного скролла. Это дает ощущение полноценного web-app, а не просто сайта. При этом мы внедрили динамическую смену тем через Tailwind — она автоматически подстраивается под систему пользователя (светлая/тёмная).

Борьба со сдвигами (CLS). Страница на PHP генерировалась настолько быстро, что появлялась в браузере раньше внешнего CSS-файла, из-за чего макет «прыгал». Решение: мы заинлайнили в <head> базовые классы Tailwind. А чтобы не тратить миллисекунды на загрузку кастомных веб-шрифтов (что тоже вызывает мерцание), мы принудительно использовали системные шрифты ОС.

Кэширование, которое оказалось не нужным

Сначала я написал модуль полного кэширования HTML (отдавал статику). Но в процессе профилирования выяснилось невероятное: движок на чистом PHP без БД (чтение текстов из файловой системы) работал настолько быстро, что разница между отдачей статического HTML-кэша и динамической генерацией страницы оказалась на уровне статистической погрешности!

В итоге мы полностью выпилили кэширование, чтобы не усложнять архитектуру и инвалидацию. PHP 8.3 без фреймворков творит чудеса.

Бесплатный AI-инструмент как источник вовлечённости

Был момент, когда проект уперся в плато: около 400 визитов в месяц. Обычных конвертеров и тулзов было уже недостаточно для роста. Нужно было предложить аудитории что-то более ценное.

Я посчитал себестоимость ответа нейросети через API (тот же DeepSeek): около одной десятой цента за ответ. Решил раздавать генерацию нужных текстов бесплатно — человек заходит на сайт, вводит пару строк, нейронка пишет ответ через пару секунд.

Эффект оказался шире, чем я рассчитывал. Люди действительно решали свою задачу и надолго оставались на странице:

  1. Человек заходит с запросом.
  2. Вводит текст, ждет ответа, копирует его.
  3. Закрывает сайт, потому что интент полностью удовлетворен.

Для поисковых алгоритмов это ровно та картина, которую они и должны видеть у полезного инструмента: человек нашёл то, что искал, и не вернулся в выдачу доделывать поиск.

Технически реализовать это с нашей архитектурой было элементарно. В ядре лежал единый модуль работы с API. Чтобы создать новый AI-инструмент (например, генератор Title или сценариев), я просто копировал папку тулза и вписывал в lang.php уникальный системный промпт.

В итоге мы создали более 10 таких AI-сервисов. За 8 месяцев работы на балансе API было потрачено меньше 1 доллара, а сайт получил отличный целевой трафик благодаря тому, что инструменты действительно решали задачи людей.

Провал мультиязычности: физику не обманешь

Была идея масштабироваться на весь мир. Инструменты интуитивны (загрузил → скачал), поэтому мы прикрутили модуль мультиязычности на лету. По урлу /en/ отдавался тот же шаблон с английскими строками и атрибутами.

Но метрика показала суровую реальность: 90% трафика стабильно шло из СНГ.

Почему не взлетело?

  1. Физика (Ping). Наш сервер лежал в Беларуси. Когда я протестировал сайт американского конкурента, он жутко тормозил у меня, хотя PageSpeed показывал зеленую зону. Я понял, что для юзера из США наш движок генерирует страницу за 50 мс, но трансатлантический пинг добавляет секунды ожидания. Пользователи просто уходили.
  2. Доменная зона. У нас был домен .by. Для Google региональные TLD имеют жесткую привязку. Английский контент на региональном домене ломал алгоритмам логику.

Осознав это, мы свернули эксперименты с /en/ и сфокусировались на улучшении RU-версии.

Выход из песочницы: как я забыл про сайт и обалдел

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

В какой-то момент я с головой ушел в развитие агентства (мы внедряли внутреннюю CRM-систему и настраивали ИИ-агента для бизнес-процессов — об этом я обязательно расскажу в одной из следующих статей). Я банально «забил» на MicroApps и выпал из жизни пет-проекта. Время шло.

Когда я спустя пару месяцев снова зашел в аналитику (примерно 21 апреля 2026 года), я просто обалдел: график кликов, который раньше дергался как кардиограмма, выровнялся и плавно полз вверх. Пошли стабильные переходы из Google! Сайт сам вышел из песочницы, пока я занимался другими делами.

При этом я столкнулся с интересной аномалией: CTR оставался стабильно низким, но поисковики всё равно упорно тащили меня в ТОП.

Ответ лежал в Яндекс.Метрике:

  • Процент отказов (Bounce Rate): 17,38% (феноменально низкий для микро-утилит).
  • Время на сайте: 4 минуты 37 секунд.

Алгоритмы видели: да, кликают не часто, но те, кто кликнул — сидят на сайте по 4 минуты, пишут запросы к AI, решают свою задачу и не возвращаются в поисковую выдачу. Идеальное закрытие интента перекрыло низкий CTR.

Локомотивами трафика стали:

  1. AI-генератор формул Excel (2600+ просмотров).
  2. Объединитель текстовых файлов txt-merge (2000+ просмотров).
  3. Background cleaner и генератор эффекта жидкого стекла.

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

Кстати: сейчас MicroApps живёт не как отдельный проект, а как продукт FastUP — агентства, где я отвечаю за разработку. Тот же принцип «SEO с первого дня, а не докручивать потом» использую и в клиентских сайтах.

Итог и сюрприз от нейросетей

За период с ноября 2025 по июль 2026 сайт собрал 6 853 визита и 12,4 тыс. просмотров, не потребовав ни копейки на рекламу и ссылки (мои затраты составили всего $1 на оплату токенов по API). Я стабильно вышел за планку 1500 органики в месяц.

И тут случился главный сюрприз: в аналитике появились переходы из Perplexity. Это означало, что поисковые нейросети (Generative AI) начали вытаскивать мои инструменты в свои ответы.

Это спровоцировало полный пересмотр стратегии. Прямо сейчас я кардинально перерабатываю сайт под GEO-оптимизацию (Generative Engine Optimization).

Поскольку MicroApps — это идеально чистый полигон для испытаний (молодой сайт, на котором вообще нет рекламы и нет ссылочной массы, только чистая органика), любые изменения метрик здесь максимально показательны. Прошло еще мало времени, но как только соберется достаточная статистика по результатам GEO-внедрений, я обязательно выкачу об этом отдельную статью.

Пишите свои инструменты, не бойтесь отказываться от тяжелых баз данных и делайте интернет чище! Буду рад ответить на вопросы по архитектуре и SEO в комментариях. А о том, как выжать максимум скорости из WordPress, читайте в статье Google PageSpeed в зелёной зоне без плагинов.

Исходный код и демонстрация платформы на GitHub

Исходный код демо-версии ядра и архитектуры No-DB платформы MicroApps передан в открытый доступ. Вы можете изучить устройство роутинга, изоляцию модулей и реализацию SEO-блоков напрямую в репозитории команды FastUp.by.

Репозиторий на GitHub: <a href="https://github.com/FastUpBy/microapps.by

Также рекомендуем изучить наш бенчмарк моделей DeepSeek Pro и Flash для ИИ-агентов.

» target=»_blank» rel=»noreferrer noopener nofollow»>github.com/FastUpBy/microapps.by

Также рекомендуем изучить наш бенчмарк моделей DeepSeek Pro и Flash для ИИ-агентов.

Частые вопросы об архитектуре и разработке MicroApps

Как защитить No-DB проект на файловой системе от CSRF-атак и взлома без базы данных?

Отсутствие SQL-базы не означает отсутствие безопасности. Для защиты от межсайтовой подделки запросов (CSRF) мы с нуля написали сессионный класс CsrfProtection, проверяющий токены при каждом запросе с защитой от тайминг-атак через hash_equals(). Код модуля выложен в открытом репозитории на GitHub.

Почему был выбран чистый PHP 8.3, а не Go или Node.js?

Главная цель — сделать предельно быструю платформу с минимальной стоимостью владения. Современный PHP 8.3 по официальным бенчмаркам работает на уровне Go, но не требует подыскивать и администрировать отдельный изолированный Node-бэкенд. PHP — это доступная базовая инфраструктура, работающая на любом хостинге без накладных расходов.

Как защитить бесплатные AI-генераторы от скликивания API и удержать бюджет в $1?

Мы внедрили двухслойный барьер: привязку лимитов к IP-адресу и быструю аутентификацию через Google Auth. Неавторизованный пользователь получает 3 бесплатные генерации, а вход в один клик через Google поднимает лимит до 10. Блокировка по IP исключает обход ограничений простым обновлением страницы, очисткой кэша или режимом инкогнито.

В каких случаях бизнесу нужна кастомная разработка, а не Tilda или WordPress?

Кастомная инженерия необходима, когда задача выходит за рамки типового сайта или лендинга: при создании веб-сервисов, CRM-систем, сложных дашбордов или онлайн-платформ. Для сверхбыстрых утилит подходит чистый PHP, а для масштабируемых веб-приложений команда FastUp использует Laravel, React или Next.js с версткой по стандарту Mobile First на Tailwind v4.

Похожие записи

Хотите заказать разработку сайта?

Разберём задачу и пришлём расчёт. Отвечаем в течение рабочего дня.

FastUp.by
FastUp.by
Оставить заявку
Заявка успешно отправлена!
Изучим проект и свяжемся с вами в течение рабочего дня.