Март 2025. Я подписался на «поработать несколько месяцев» в ООО «ДС» — собрать CRM для управления квартирами в краткосрочной аренде. Март 2026. Я закрыл контракт, и за эти тринадцать месяцев продукт прошёл путь от одного листа в Google Sheets до полноценной SaaS-платформы на 50+ объектов.
Я ушёл не потому что устал. Ушёл потому что дело было сделано. Но год в DomikSmart изменил то, как я теперь смотрю на любой SaaS. Пишу себе на память — и вам для пользы.
Фронт и бэк — это один продукт, а не два проекта
До DomikSmart я относился к бэку и фронту как к двум разным существам с общим API. На Next.js SSR с серверными экшенами эта граница буквально исчезает. Один запрос может начать рендериться на сервере, дожать данные параллельно из трёх источников, отдать клиенту готовый HTML и сразу же догнать клиентской гидрацией только то, что действительно интерактивно.
Это заставило меня пересмотреть что такое «страница». Страница — это контракт доставки данных пользователю. Не React-компонент, не роут, не endpoint. Если я не могу описать страницу на салфетке как «этот пользователь получает эти данные за это время», я ещё не понимаю, что делаю.
Деплой — это функция продукта
В первые недели деплой занимал два часа: build, push, rsync, ручная перезагрузка сервисов, проверка, откат если что-то отвалилось. Через месяц я поставил Coolify на self-managed VPS, собрал GitHub Actions → Docker → Coolify pipeline, и цикл схлопнулся до пяти минут.
Звучит как банальность, но вот что я тут понял: деплой — это не техническая рутина, это продуктовая фича. Если я деплою за пять минут, а не за два часа, я в двадцать четыре раза чаще готов выкатить мелкую правку. Цикл обратной связи с реальным пользователем сжимается в двадцать четыре раза. Это другое качество решений, не просто другая скорость.
Этот урок перекочевал в GChat как встроенный дефолт: сразу CI → Docker → Coolify, сразу зелёная кнопка «задеплоить». Никаких «потом настроим».
+40% органики не из-за чуда, а из-за дисциплины
Маркетинговая часть DomikSmart — публичный сайт для поиска квартир — выросла по органическому трафику на 40% за год. Никакого магического SEO, никаких инвестиций в блоги. Три вещи:
- Серверный рендеринг с реальными мета-тегами. Не «SSR в теории», а Next.js с полной гидрацией, правильными OG-изображениями, структурированными данными для каждой карточки объекта.
- Скорость первого байта. Edge-кэш + Redis для статики + умные инвалидации при обновлении цен. TTFB < 120 мс с московских узлов.
- Ни одного попапа, куки-баннера, «подпишитесь» и рекламного скрипта третьей стороны. Пользователь открывает страницу — и сразу видит квартиру.
Вывод лаконичный: хороший SEO — это просто быть хорошим сайтом.
Где я ошибся и дорого заплатил
Чтобы не звучало как «у меня всё получилось идеально»: я потерял три недели на миграцию с одной версии Prisma на другую под PostgreSQL с nested transactions. Думал — «обновимся аккуратно». Получил — скрытые race-condition на продовых брони, когда два менеджера одновременно двигали один календарь.
Урок: обновления зависимостей — это продакшн-инцидент в зародыше. Особенно то, что трогает транзакционную логику. В GChat я уже веду DEPENDENCIES.md с явной политикой: каждое обновление криптобиблиотеки — это отдельный PR, с отдельным load-тестом, с отдельной недельной стабилизацией.
Что я забираю с собой
- Один стек, одна инфраструктура, один язык деплоя. В моём случае — Docker + Coolify + Traefik. Всё остальное — проприетарные надстройки, которых легко избежать.
- SSR как дефолт, client-side как исключение. Пока страница может быть серверной — она серверная.
- Дисциплина по зависимостям. Любое обновление — осознанное решение, а не
npm update. - Деплой как UX-метрика. Пять минут — хорошо. Двадцать секунд — лучше. Час — это техдолг.
Год работы на одном продукте соло — это не про «выжить». Это про то, что ты становишься тем самым человеком, который знает, где в продукте скрипят доски, и кто их прикручивал. Это редкое состояние. И оно стоит года.