статья · 08.09.26 · 10 мин чтения
Сайт с оплатой и личным кабинетом, собранный вдвоём с ИИ
Разбор своей платформы: витрина, приём денег, кабинет и журнал за 24 дня без программиста в штате. Порядок работ, проверка на живых деньгах и грабли.
Сайт, на котором вы читаете эту статью, я собрал сам, диалогом с ИИ. Не лендинг-визитку: здесь работает приём денег через кассу, личный кабинет с выдачей доступов, журнал, письма и админка. Программиста в штате у меня нет и не было. Седьмого августа был пустой репозиторий, тридцать первого - работающая система, проверенная живыми оплатами. Ниже разбор: в каком порядке это собиралось, где я потерял дни и что бы сделал иначе.

Что именно работает, а не «сайт готов»
Слово «сайт» скрывает разницу между визиткой и системой, которая берёт деньги. Поэтому конкретно, по частям:
| Часть | Что делает |
|---|---|
| Витрина | страницы услуг и продуктов, цены тянутся из базы, а не вписаны в вёрстку |
| Приём денег | заказ, оплата через кассу, чек покупателю, автоматический возврат кнопкой |
| Кабинет | доступ к материалам после оплаты, список устройств, выход со всех |
| Вход | без пароля: одноразовая ссылка на почту, реестр сессий в базе |
| Журнал | статьи и словарь, публикуются и вручную, и машиной по токену |
| Админка | продажи, выдача и отзыв доступа, состояние системы, журнал действий |
| Фоновые задачи | сверка платежей, чистка просроченного, сторож, который будит меня при тишине |
Важная деталь про цены: они живут только в базе. Это правило я поставил в первый день и ни разу не нарушил - иначе на лендинге одна цифра, в письме другая, а разбираться будет живой человек за свои деньги.
Порядок, который сэкономил мне месяц
Соблазн начать с красивой главной страницы огромен: результат виден сразу, и кажется, что дело идёт. Я начал наоборот, и это оказалось главным решением всего проекта.
Порядок был такой:
- Фундамент. Репозиторий, база, вход по ссылке, журнал ошибок, бэкап с проверенным восстановлением. Ничего из этого не видно снаружи - и без всего этого остальное строить бессмысленно.
- Путь денег. Витрина, заказ, касса, чек, возврат, письма. Здесь система впервые становится бизнесом.
- Кабинет и материалы. То, ради чего человек платит.
- И только потом визуал. Дизайн приехал двадцать шестого августа, через три недели после старта - на уже работающую систему.
Почему так. Красивая витрина поверх неработающей оплаты - это витрина магазина без кассы: люди заходят и уходят. А работающая оплата на аскетичном тексте деньги уже берёт. К моменту, когда я занялся внешним видом, я точно знал, какие страницы существуют и что на них должно быть - переделывать не пришлось.

Как выглядит сама работа
Со стороны это похоже на переписку. Я формулирую задачу словами предпринимателя, а не техническим заданием: «после оплаты человек должен получить письмо с доступом, а если письмо не ушло - я должен об этом узнать». Дальше машина пишет код, я смотрю результат и говорю, что не так.
Но есть часть, без которой это превращается в кашу через неделю: правила проекта, записанные один раз и навсегда. У платформы есть файл, который читается в начале каждой сессии, и в нём не пожелания, а запреты с ценой нарушения. Например:
- цены и даты берутся только из базы. Цена нарушения: на витрине одна цифра, в письме другая, разбирается живой человек;
- права доступа не кэшируются даже на двадцать секунд. Цена: доступ отозван, а человек всё ещё внутри;
- записи о платежах и людях физически не удаляются никогда, только помечаются удалёнными. Цена: потерянная история денег, которую не восстановить;
- ничего не выкатывается наружу без моей команды.
Это оказалось важнее любого кода. Машина не помнит вчерашний разговор, зато безупречно исполняет то, что записано в файле. Правило, сформулированное один раз, работает во всех следующих сессиях - в том числе через месяц, когда я сам уже забыл, почему так решил.
Второе, что держит систему: каждое решение записывается с причиной. Не «сделали так», а «сделали так, потому что иначе будет вот это». Через три недели я перечитываю и понимаю ход мысли, вместо того чтобы спорить с самим собой из прошлого.
Что я не отдал машине
Есть части, которые я делаю руками принципиально, и дело не в недоверии к технике.
Деньги. Каждый выкат кода, касающийся оплат, я проверяю сам, своей картой. Не потому что машина ошибётся в коде - потому что ошибка здесь стоит чужих денег и репутации, а цену ошибки платит владелец.
Права доступа. Кто что видит в кабинете - тот участок, где я читаю код глазами. Дыра в правах не выглядит как поломка: система работает, просто не тому человеку видно лишнее.
Юридические тексты. Оферта, политика, условия возврата написаны и вычитаны отдельно. Здесь цена ошибки измеряется не в неудобстве, а в штрафах.
Решение, что вообще строить. Машина отлично отвечает на вопрос «как», но вопрос «что и зачем» остаётся за владельцем. За месяц работы я несколько раз отклонял технически красивые предложения, потому что они не решали ни одной моей задачи.
Проверка на живых деньгах: где падают тесты
Двадцать пятого августа я прогнал шесть сценариев пути денег, и в трёх из них шли настоящие деньги с моей карты: две оплаты, обе с последующим возвратом. Не в тестовом режиме кассы, а по-настоящему.
Этот прогон вскрыл три дефекта, которых не показал ни один из трёхсот с лишним автоматических тестов, написанных к тому дню:
- Сверка платежей не работала с рождения. Идентификатор платежа не записывался в заказ при создании, и страховка, которая должна ловить потерянные уведомления кассы, каждый раз сканировала пустоту. Тесты проверяли сверку на подготовленных данных, где идентификатор уже был.
- Письмо владельцу о продаже было заглушкой. Функция существовала, тест на неё проходил, письмо не уходило никуда.
- Брошенная корзина. Человек, начавший оплату и не закончивший, оставался в подвешенном состоянии - об этом просто никто не подумал.
Вывод, который я вынес и с тех пор повторяю: тесты проверяют то, что вы придумали проверить. Живой прогон проверяет то, что вы придумать забыли. Для системы, которая берёт деньги, второе обязательно, а цена ему - комиссия с тестовых оплат: касса не возвращает её, даже когда деньги вернулись на карту.
Грабли, которые стоили дней
Самое дорогое в этой работе - не код. Код пишется быстро. Дни съедают внешние сервисы, которые ведут себя не так, как написано в их документации.
| Грабля | Как выглядела | Чем лечилась |
|---|---|---|
| Почтовый тариф | письма входа не доходили никому, кроме моего домена | бесплатный тариф шлёт только на свои домены, нужен платный |
| Зона домена | в панели запись есть, снаружи её нет | зона применяет правку до трёх часов, надо просто ждать |
| Сборка без базы | выкат падал на странице, которая читает базу | сборочный контейнер к базе не подключён, страницы с данными делаются динамическими |
| Кэш и даты | первый запрос страницы 200, каждый следующий 500 | кэш возвращает дату строкой, а не датой - восстанавливать на границе |
Общее у всех четырёх: в разработке они не воспроизводятся. Каждая всплыла только на живом сервере, и каждая выглядела как «всё сломалось непонятно почему». Поэтому у меня заведено правило: любую проверку на живом сервере делать дважды подряд. Один успешный ответ ничего не доказывает - вторая грабля из таблицы ловится ровно вторым запросом.
Ещё одно правило оттуда же: env -u DATABASE_URL npx next build перед каждым выкатом. Одна команда, которая эмулирует сборку без доступа к базе и ловит третью граблю до того, как она уронит прод.
Сколько это стоит на самом деле
Честный ответ на вопрос «а мне такое за сколько соберут»: дело не в деньгах за код, дело в вашем времени на решения.
Что реально потребовалось от меня как от владельца:
- Решения. Какой платёжный сервис, какое имя, что продаём, какая цена, что писать на витрине. ИИ не примет за вас ни одно из них.
- Внешние действия. Регистрация в кассе, домен, почтовый сервис, юридические документы, уведомление в Роскомнадзор об обработке персональных данных, новые коды ОКВЭД в налоговой. Всё это требует вашего паспорта и вашей подписи. А с 1 сентября 2026 года закон ещё требует подтвердить через Госуслуги того, на кого записан домен .ru.
- Проверка. Сесть и пройти путь клиента руками, своей картой, с реальными деньгами.
Чего не потребовалось: писать код, знать фреймворк, нанимать разработчика, ждать подрядчика. Это и есть вайб-кодинг в применении к бизнесу - вы описываете, что нужно, и проверяете, что получилось.
Во что обходится содержание
Вторая часть вопроса о деньгах - сколько система ест каждый месяц. Мои реальные цифры:
| Статья | Сколько |
|---|---|
| Хостинг с базой данных | 834 ₽ в месяц |
| Отправка писем | 800 ₽ в месяц (бесплатно до 24.10.2026) |
| Почта на домене | 1 198 ₽ в месяц за два места |
| Касса | 2,8% с платежа плюс 1% за чек по акции для новых ИП до 01.12.2026, по тарифу сверху НДС на комиссию |
| Домен | 399 ₽ в год (продление у Timeweb) |
Итого около 2 900 ₽ в месяц постоянных расходов плюс процент с оборота, а пока письма бесплатны, на 800 ₽ меньше. Для сравнения: один рабочий день специалиста на подряде стоит дороже, чем месяц работы этой системы. Отдельная строка, которую легко упустить: планировщик фоновых задач у площадки продаётся как отдельный контейнер почти за три тысячи в месяц - дороже самого сайта. Поэтому расписание я держу внутри приложения, и это сэкономило больше, чем весь остальной хостинг.
Отдельно скажу про сроки. Двадцать четыре дня - это не двадцать четыре дня работы с утра до ночи. Это вечера и часть выходных, между основным бизнесом и другими системами: параллельно работала контент-машина, шли ролики, крутилась субаренда.
Что бы я сделал иначе
Три вещи, которые я бы поменял, если бы начинал заново.
Проверил бы внешние сервисы до того, как строить на них. Почтовый тариф вскрылся примерно через неделю после того, как письма стали частью системы. Полчаса на чтение условий в начале сэкономили бы день починки потом.
Считал бы с первого дня. Счётчик посещений я поставил только в сентябре, через месяц после запуска. Всё это время у меня не было ответа на простой вопрос: заходит ли на сайт хоть кто-нибудь. Систему без замеров нельзя улучшать - можно только гадать.
Не откладывал бы продажи. Платформа была готова принимать деньги двадцать пятого августа. Дальше я неделю доделывал внешний вид и наполнял журнал. Это была не работа над продуктом, а очень убедительный способ отложить момент, когда придётся показать его людям.
Последнее - самая дорогая ошибка из трёх, и она не техническая. Магазин, который построен, но не открыт, не отличается от непостроенного ничем, кроме потраченного времени. Если вы собираете что-то похожее - откройте дверь раньше, чем доведёте вывеску до идеала.
Что из этого переносимо: сам маршрут. Фундамент, деньги, польза, красота - именно в таком порядке. Проверка живыми деньгами до первого клиента. Двойной запрос вместо одного. И счётчик с первого дня, а не с первого разочарования.
Обновление 29.09.2026. Цифры о прогоне и расходах уточнены по свежим записям: в расходы добавилась почта на домене, поправлены цена домена, число сценариев с живыми деньгами и число тестов на день прогона.
Журнал - про системы, которые работают у меня каждый день. Что похожее можно собрать под ваш бизнес - на странице услуг.