
«Сайт с админкой» и «сайт с личным кабинетом» звучат похоже, а в счёте расходятся в разы. Кабинет с ролями и правами набирает от 110 часов и от 17 тысяч рублей. У админки счёт другой: 30–70 часов, от 4 до 11 тысяч. Разница вся в том, кто сидит по ту сторону экрана. Дальше разберу обе половины: что внутри каждой и откуда берётся счёт.
Админка сделана под вас. В ней вы меняете цены и отвечаете на заявки, там же лежит статистика. Пользователей у неё двое-трое, и все свои.
Кабинетом пользуется клиент. В нём человек делает то, ради чего пришёл, и ничего сверх этого сделать не может.
Разница не в дизайне. Разница в том, кому вы не доверяете. В админке сидят свои: если кто-то нажмёт не туда, вопрос решается разговором в соседней комнате. В кабинете сидит улица. Любой посетитель может попробовать залезть в чужой заказ, и стоить ему эта попытка не будет ничего.
Выбор сводится к одному вопросу: кто правит данные. Если это двое-трое сотрудников, хватит админки. Она дешевле, потому что половина проверок в ней не нужна. Если своя история и свои счета нужны каждому клиенту, это уже кабинет, и права придётся проверять на каждой странице. Худший вариант такой: заказать кабинет, а пользоваться им как админкой. Вы заплатите за защиту от улицы, которой у вас нет.
Кто пользуется
Вы и ваши сотрудники
Ваши клиенты
Сколько людей внутри
Двое-трое, все свои
Сколько угодно, все чужие
Кому не доверяем
Сидят свои
Сидит улица
Проверка прав
Местами избыточна
Обязательна на каждом шаге
Цена ошибки внутри
Разговор в соседней комнате
Чужие данные у постороннего
Сколько часов
От 30, от 4–5 тысяч рублей
От 110, от 17 тысяч рублей
Частей три, и две я беру готовыми.
Вход. Такой же, как в кабинете, только проще. Пользователей двое-трое, все свои, и меньше редких случаев, которые надо предусмотреть. Сам я вход с нуля не пишу, подключаю готовый механизм. Если у сайта уже есть кабинет для клиентов, админка на том же входе обходится минимально: механизм тот же, добавляется только признак «этот пользователь свой».
Экраны редактирования. Тут списки и формы, выгрузка в файл, действия сразу над пачкой записей. Работы больше, чем кажется. Клиент в кабинете смотрит своё. Вы в админке правите чужое, а значит, надо ловить ошибки, помнить, кто что менял, и уметь вернуть как было. Основу беру из готовых наборов таблиц и форм, а что внутри, пишу под ваш бизнес.
Место. Общее с сайтом. Отдельный сервер админке обычно не нужен.
Правила доступа тут короткие. Свой или не свой. Роли иногда есть, «полный админ» и «менеджер». Обычно на этом список кончается. Это и есть та половина проверок, которой в админке нет.
Админка на три-пять экранов выходит от тридцати часов. Это примерно четыре-пять тысяч рублей и полторы-две недели. Если это магазин или сервис и нужны журнал действий и права, беру от шестидесяти-семидесяти часов: около десяти-одиннадцати тысяч и три-четыре недели работы. По часам это ровно между корпоративным сайтом и интернет-магазином из таблицы услуг. Её покажу ниже.
Дальше начинается кабинет. Частей у него уже пять, потому что появляется улица: любой посторонний человек из интернета.
Проще понять через один экран. Человек открывает сайт, вводит почту, получает письмо со ссылкой, нажимает и попадает внутрь. Видит список своих заказов, счёт на оплату, пару загруженных документов и кнопку «сменить тариф». Чужого не видит ничего.
Под словом «кабинет» люди имеют в виду очень разное. Кто-то хочет, чтобы клиент сам скачал договор и перестал звонить в офис. Кто-то пускает внутрь подрядчиков с отчётами. Общее у всех одно. У каждого вошедшего свои данные, и данные соседа ему недоступны. Кабинет обещает человеку, что он не увидит чужого, и держать это обещание приходится на каждой странице.
Частей пять, и выкинуть нельзя ни одну, хотя соблазн есть почти всегда.
Вход. Регистрация, логин, выход, восстановление доступа, хранение паролей и память о том, что человек уже вошёл и спрашивать второй раз не надо. Всё это человек видит как одну форму на две строчки.
База. Место, где лежат люди и всё, что к ним привязано: заказы, файлы, история. У кабинета база есть всегда. Именно она отличает кабинет от набора закрытых страниц. Какую выбрать под конкретный проект, я разбирал отдельно, там карта баз и пять вопросов до выбора.
Правила доступа. Кто что видит и что может менять. Тот самый вопрос «а тебе это можно?», который задаётся при каждом обращении к каждой записи.
Экраны. Списки, формы, карточки, загрузка файлов. Обычно именно их и показывают в макете, когда обсуждают кабинет.
Место, где всё это живёт. Сервер, домен, сертификат, почта для писем, копии на случай беды.
На этот скелет дальше навешивается то, что и делает кабинет дорогим: приём денег и подписки, уведомления, выдача файлов, журнал действий. В пять частей они не входят, а в смету входят, и заметно.

Вход, базу и место. Три части из пяти.
С входом есть три дороги, и обычно выбирают не ту.
Первая: арендовать сервис. Внешний сервис входа закрывает регистрацию, пароли, восстановление доступа, вход через соцсети и двухфакторную проверку. Бесплатных тарифов хватает надолго: потолок 25 или 50 тысяч активных пользователей в месяц, смотря чей сервис. Дальше начинается помесячная плата, и растёт она от числа людей.
Вторая: взять библиотеку к себе. Готовый код входа ставится в ваш проект и работает на вашем сервере и вашей базе. Хеши паролей вы при этом не пишете, а данные людей никуда не уезжают. Для белорусского проекта это часто и есть правильный ответ, и ниже в разделе про поломки будет видно, почему.
Третья: написать самому. Дороже первых двух и почти всегда лишнее. Почти, потому что исключения есть: закрытый контур, требование держать данные только у себя, один-единственный сценарий входа по ссылке из письма.
Скажу честно, раз уж советую. Сайт, который вы сейчас читаете, ходит по третьей дороге: вход тут написан руками, без пароля, по ссылке из письма и коду. В шаблоне, на который я ссылаюсь, тоже свой. Так вышло исторически, и знать это полезнее, чем читать бодрый совет «просто арендуйте».
Если будете писать сами, учтите: правила поменялись, и не в ту сторону, куда все привыкли. Требование «заглавная, цифра, спецсимвол» и принудительная смена пароля раз в три месяца в стандарте NIST SP 800-63B теперь прямо запрещены, формулировка там именно «запрещено». Стандарт входа без пароля, WebAuthn, в августе 2026 года дошёл до финальной версии, и такой вход умеет любой арендованный сервис. Так что часть решений, которые в самодельном кабинете делали «как надо», сегодня работает против вас.
Раньше вход через Телеграм каждый прикручивал по-своему. Теперь он работает по общему стандарту. Заодно он отдаёт номер телефона. Если вход по номеру был обязательным, рассылку кодов по SMS покупать больше не нужно. А это целая статья расходов: тысяча пользователей, четыре входа в месяц, и коды обходятся примерно в 140 рублей ежемесячно.
База арендуется вместе с сервисом входа или отдельно, и на старте почти всегда бесплатно.
Экраны стоят особняком, поэтому в тройку арендованного я их не записал. Каркас берётся готовым: наборов таблиц, форм и кнопок хватает, рисовать список заказов с нуля незачем. А что на этих экранах показывать и кому, решаете вы, и вот это уже работа. И поправка из практики: задача может быть простой, но как только хочется добавить визуала и сделать красивее, время растёт стабильно вдвое, иногда больше. Жадность тут ни при чём, так устроена работа.
Место, где всё живёт, покупается последним. В десятках моих проектов видимая часть сайта живёт на Vercel, а серверная в стороне. Часто серверной части нет вовсе: страницы обращаются напрямую к внешним сервисам, и этого хватает. Свой сервер я беру, когда проект вырос и нужны контроль и предсказуемый счёт. Про то, куда всё это выкладывать и где живёт вход, есть разбор вариантов хостинга.
Итого три части из пяти стоят почти ноль. Остаются две.
Правила доступа и содержание экранов. На них и уходит бюджет.
Про правила доступа надо сказать точно, потому что тут легко соврать в обе стороны. Механизм арендуется: существуют движки политик и системы прав, куда правила выносятся из кода и живут отдельным файлом или отдельным хранилищем. Это рабочая, взрослая практика, и она экономит время.
А вот сама политика не арендуется никогда. «Этот счёт видит вот этот клиент и его бухгалтер, но не видит менеджер соседнего филиала». Такое правило описывает ваш бизнес, и придумать его за вас не может ни один движок. Готовый сервис знает, что человек вошёл. Он не знает и не может знать, что этому человеку у вас разрешено.
Насколько это больное место, видно по сводной статистике уязвимостей. В редакции OWASP Top 10 за 2025 год нарушения контроля доступа стоят на первом месте. Формулировка там жёсткая: дыра того или иного вида нашлась во всех ста процентах проверенных приложений. Не в большинстве. Во всех.
Самая частая поломка простая до обидного. Человек открывает свой заказ по адресу с номером на конце, меняет номер на соседний и видит чужой заказ. Проверка «а эта запись твоя?» либо не написана, либо написана для одной кнопки и забыта для трёх остальных.
Где именно стоит эта проверка, решает половину сметы, поэтому разложу на пальцах. У одной записи, скажем у счёта, дверей несколько: посмотреть в списке, открыть карточку, скачать файл, отменить. Проверку можно поставить у каждой двери отдельно. Тогда через полгода дверей десять, писали их в разные месяцы, и одна однажды остаётся без замка. Ровно так и появляется дыра из абзаца выше.
Второй способ: поставить проверку в одном месте, через которое проходят все обращения к счетам. Тогда новая дверь получает замок по умолчанию, и забыть про него негде. На старте это дороже, дальше дешевле, и разница между двумя способами хорошо видна в счёте. Поэтому первый вопрос разработчику из списка ниже именно про это.
Второе, что пишется руками, это, собственно, смысл. Какие поля в профиле вообще нужны. Что открывается после оплаты и что закрывается, если человек не заплатил. Какие события шлют уведомление и кому. Что происходит, когда один и тот же человек вошёл сначала почтой, а потом Телеграмом. Это один пользователь или два?
На последнем стоит остановиться, потому что решать придётся вам, и решение это дорогое. Склеивать входы по совпадению почты опасно: чужую почту в Телеграме никто не подтверждал, и так в чужой кабинет заходят без всякого взлома. Рабочий порядок обратный. Человек заходит любым способом, попадает в свой профиль и уже изнутри, будучи опознанным, привязывает второй способ входа. Тогда склейка происходит по осознанному действию, а не по совпадению строки в базе. Ни один арендованный сервис за вас этого не выберет.
Считаю по часам. Ставка одна для всех типов работ по сайтам и опубликована на странице цен: 155 белорусских рублей, или 55 долларов, за час. Веб-сервис с кабинетом обойдётся от 110 часов и от семи недель. В эти часы входят регистрация и роли, сам кабинет, счета и подписки, админка, интеграции. Вилка не заменяет смету: после того как разберём список страниц и функций, часы уточнятся в обе стороны, и в договор пойдёт точная цифра.
Чтобы прикинуть свой порядок, посмотрите, где кабинет стоит относительно остального.
Лендинг
12-20 часов, 1-2 недели
около 1900-3100 рублей
Корпоративный сайт
28-50 часов, 2-4 недели
около 4300-7800 рублей
Интернет-магазин
60-110 часов, 4-7 недель
около 9300-17000 рублей
Веб-сервис с кабинетом
от 110 часов, от 7 недель
от 17000 рублей
Доработка готового сайта
от 5 часов, по мере задач
от 800 рублей
Рубли тут производные: часы умножены на ставку. Ставка опубликована и меняется, так что считайте по свежей, а не по этой таблице через год.
Свою оценку собирают в три шага. Берут ближайшую строку как базу. Отдельной строкой просят оценить каждую интеграцию с чужой системой. И ещё одной строкой каждую роль после первой. Три шага не дают точной сметы, но дают порядок, с которым уже не страшно идти в разговор.
Кабинет начинается там, где заканчивается интернет-магазин. Экранов у магазина даже больше. Дело в том, что покупатель магазина видит один и тот же каталог, а в кабинете каждый видит своё, и это своё надо проверять на каждом шагу.
Экран профиля рисуется за день. Правило «кто имеет право видеть этот профиль» занимает неделю: проверять его надо в каждом запросе, покрыть тестами и не сломать, когда добавится следующая роль. Заказчик смотрит на макет и считает экраны. Счёт растёт от проверок, которых на макете нет.
Сильнее всего смету двигают три вещи.
Число ролей. При одной роли всё сводится к проверке «свой или чужой». Две роли требуют таблицы «кому что можно», и держать её в голове надо при каждой новой кнопке. На трёх добавляются правила пересечения: что видит бухгалтер клиента, который заодно менеджер другого проекта. Растёт это нелинейно, и я до сих пор регулярно ошибаюсь в оценке именно здесь: кажется, что третья роль это ещё немного той же работы, а она тянет за собой пересчёт всего, что было.
Число интеграций. Каждая внешняя система приносит с собой чужой контракт и чужие простои. Плюс повторные попытки, проверка «а не провели ли мы этот платёж дважды» и отдельный сценарий на случай, когда система молчит.
Деньги внутри. Разовая оплата закрывается виджетом. У подписки есть жизненный цикл, и он длинный: карта не прошла, повтор через два дня, письмо клиенту, льготный период, ограничение доступа, восстановление после оплаты. Этого куска нет ни в одном туториале, а занимает он недели. Про него всегда вспоминают в последний момент, я в том числе.
А цену почти не двигает как раз то, о чём обычно торгуются: есть ли логин вообще, сколько полей в профиле, насколько красив список.
Про ежемесячные расходы. На старте они близки к нулю: площадка для страниц, сервис входа и база укладываются в бесплатные тарифы, домен стоит копейки. Платить начинаете, когда перерастаете бесплатный потолок или когда включаете SMS. Свой сервер добавляет от нескольких долларов в месяц.
Половину надстройки в первой версии можно не делать, и это самый быстрый способ уменьшить счёт. Обычно откладывают без потерь:
подписки с автосписанием, на старте достаточно выставить счёт руками; уведомления в мессенджер, хватает письма; журнал действий, он нужен, когда появляется вторая роль и споры; тонкие права, пока роль одна, проверка «своё или чужое» закрывает всё; админку с красивыми таблицами, первое время правит тот, кто умеет в базу.
Проверку «эта запись твоя» и копию базы. Первую потом придётся переписывать через весь код, вторая однажды понадобится ночью.
И честно про нижнюю границу. Вилка от 110 часов описывает полноценный сервис. Если у вас уже есть сайт и нужен маленький кабинет сбоку на три экрана, часы будут другие. Строка про доработку в таблице выше сюда не годится: там правки по живому коду, а кабинет это новая закрытая часть со своей базой и своими правами, пусть и маленькая. Отдельной опубликованной вилки под такой случай у меня нет, поэтому назову её после того, как посмотрю задачу, а не наугад.
Иногда да, и я скажу об этом прямо, если увижу, что ваш случай такой.
Кабинет у конструкторов есть. Страницы собираются в группы, группа открыта только участникам, вход по почте или по телефону с кодом, восстановление доступа на месте. Для закрытого раздела с материалами для своих этого достаточно, и платить за разработку тут не за что.
Упирается это в трёх местах. Ролей и разграничения прав документация кабинета не описывает: участник группы видит страницу целиком. Историю заказов и управление платежами внутри кабинета документация тоже не обещает. И есть жёсткий лимит: с одним логином внутрь пускают не более чем с трёх устройств.
Отсюда правило выбора. Если «кабинет» означает «закрытые страницы для своих», берите конструктор и не тратьте деньги. А вот когда у каждого клиента свои данные, конструктор упрётся: нужна база, права и логика под ваш бизнес. Граница проходит ровно между «спрятать страницу» и «показать этому человеку его записи».
И сразу снимаю частый страх. Переделывать существующий сайт не придётся. Кабинет живёт отдельно, обычно на поддомене вида lk.вашсайт.by, а с лендинга в него ведёт обычная кнопка «Войти». Для посетителя это один сайт, технически две разные части, и лендинг на конструкторе остаётся как есть.
Форму входа начинают ломать с первого дня. Крупный сетевой провайдер пропускает через себя около пятой части мирового интернет-трафика и померил вот что. В 41 проценте удачных входов человек вводит пароль, который уже где-то утёк раньше. А 95 процентов попыток войти с утёкшим паролем делают боты. Замер 2024 года. Никто не ждёт, пока вы станете популярным: перебор идёт по спискам автоматически.
Что с этим делать, известно, и делается это один раз. Ограничить число попыток. Проверять пароль по базам утечек. Включить второй фактор хотя бы тем, у кого внутри деньги.

Недавно появилось ещё одно слабое место. Нейросети собирают кабинеты охотно, и экраны у них выходят приличные на вид, а вот безопасность проседает: почти половина сгенерированного кода проверку не проходит. Причина, по-моему, простая. У нейросети нет органа, которым боятся. Я каждый день пишу код и каждый день немного опасаюсь что-то сломать, и это опасение заставляет меня перепроверять доступы. Модель ломает не назло, она просто уверена, что права.
С генераторами сайтов вышло нагляднее. Один из популярных инструментов какое-то время создавал таблицы в базе без правил доступа: сайт готов, кнопки работают, а данные отдаются любому, кто спросит. Формально отвечает за это владелец приложения. Практически человек не знал, что должен что-то дописывать. Ответственность легла на того, кто не подозревал о её существовании. Поэтому после генерации первым делом идите и проверьте, что у таблиц в базе вообще есть правила доступа.
Если собираете кабинет нейросетью, посмотрите конструктор промтов для проверки безопасности, он бесплатный.
Как только в базе завелись чужие имена и телефоны, у вас появились обязанности. Назначить ответственного за внутренний контроль обработки, написать политику обработки и порядок доступа. При утечке уведомить регулятора незамедлительно, и не позднее трёх рабочих дней, причём для одного из органов срок ещё короче, сутки. Самих людей, чьи данные утекли, тоже надо уведомить. Свой сюжет у зарубежного сервиса входа. Подключая его, вы передаёте персональные данные за границу. Законным это делает либо страна из перечня, либо информированное согласие человека, и проще всего именно согласие. Вот тут вторая дорога, библиотека у себя, оказывается заметно спокойнее. Я не юрист и юридических консультаций не даю, но знать про этот шаг лучше до запуска, чем после письма.
И совсем бытовое. Копию базы обычному кабинету снимают раз в сутки ночью, дальше по динамике проекта. Копия, которую ни разу не разворачивали обратно, копией не считается.
Эти вопросы стоят дешевле всего и экономят больше всего. Задайте их любому исполнителю, включая меня.
Последний вопрос самый полезный. Хороший исполнитель на него ответит охотно.
Начните с конца. Опишите одним абзацем, что человек делает в кабинете и чего не должен видеть. Из этого абзаца вырастает всё остальное, включая цену.
Теперь сократите, и сильнее, чем хочется. Выберите самое важное, впустите людей, соберите обратную связь и только потом стройте вторую очередь. Если написать всю систему сразу, выяснится, что 80 процентов функций никому не нужны, а деньги за них уже заплачены.
Дальше две двери, и первая мне нравится больше.
Возьмите шаблон кабинета и запустите его сами. Он платный, но недорогой: цена стоит на странице материала. Внутри уже работают вход, регистрация, база и загрузка файлов, то есть те части, которые всё равно арендуются. Останется дописать своё, а своё, как вы уже поняли, это правила доступа и смысл. Я бы предпочёл, чтобы вы сделали сами. Моя задача научить.
Если руками не выходит или некогда, посчитаю ваш кабинет по часам и назову вилку до созвона.
Шаблон веб-приложения, в котором уже работают вход, регистрация, база и загрузка файлов. Поднимается за вечер, дальше дописываете своё.
Открыть шаблонЧто такое Telegram Mini App и как сделать свой
Приложение внутри мессенджера: чем отличается от бота и от сайта, из чего состоит, где ломается. Плюс рабочий шаблон на Python, который можно скачать.
MCP-сервер простыми словами: что это и как сделать
Переходник между нейросетью и вашими данными. Из чего состоит, как собрать первый за вечер и где начинаются проблемы с доступами и персональными данными.
Почему ИИ не боится снести вашу базу
У нейросети нет страха сломать прод, поэтому «будь аккуратнее» не работает. Защита встраивается в процесс: бэкап в стороне, отдельная база, права на чтение.