Сайт с админкой и личным кабинетом: что внутри и сколько стоит

21 минута чтения

«Сайт с админкой» и «сайт с личным кабинетом» звучат похоже, а в счёте расходятся в разы. Кабинет с ролями и правами набирает от 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 года. Никто не ждёт, пока вы станете популярным: перебор идёт по спискам автоматически.

Что с этим делать, известно, и делается это один раз. Ограничить число попыток. Проверять пароль по базам утечек. Включить второй фактор хотя бы тем, у кого внутри деньги.

Навесной замок на стальной двери, вокруг замочной скважины плотный веер царапин от чужих ключей
Царапин вокруг скважины заметно больше, чем оставил бы один хозяйский ключ. Форму входа пробуют с первого дня, и пробуют чужие.

Недавно появилось ещё одно слабое место. Нейросети собирают кабинеты охотно, и экраны у них выходят приличные на вид, а вот безопасность проседает: почти половина сгенерированного кода проверку не проходит. Причина, по-моему, простая. У нейросети нет органа, которым боятся. Я каждый день пишу код и каждый день немного опасаюсь что-то сломать, и это опасение заставляет меня перепроверять доступы. Модель ломает не назло, она просто уверена, что права.

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

Если собираете кабинет нейросетью, посмотрите конструктор промтов для проверки безопасности, он бесплатный.

Как только в базе появились чужие имена и телефоны

Как только в базе завелись чужие имена и телефоны, у вас появились обязанности. Назначить ответственного за внутренний контроль обработки, написать политику обработки и порядок доступа. При утечке уведомить регулятора незамедлительно, и не позднее трёх рабочих дней, причём для одного из органов срок ещё короче, сутки. Самих людей, чьи данные утекли, тоже надо уведомить. Свой сюжет у зарубежного сервиса входа. Подключая его, вы передаёте персональные данные за границу. Законным это делает либо страна из перечня, либо информированное согласие человека, и проще всего именно согласие. Вот тут вторая дорога, библиотека у себя, оказывается заметно спокойнее. Я не юрист и юридических консультаций не даю, но знать про этот шаг лучше до запуска, чем после письма.

И совсем бытовое. Копию базы обычному кабинету снимают раз в сутки ночью, дальше по динамике проекта. Копия, которую ни разу не разворачивали обратно, копией не считается.

Что спросить у разработчика до того, как соглашаться

Эти вопросы стоят дешевле всего и экономят больше всего. Задайте их любому исполнителю, включая меня.

  1. Где живёт проверка прав: в каждом обработчике по отдельности или в одном месте, через которое проходят все запросы?
  2. Покажите тест, который ловит подмену номера в адресе страницы. Если такого теста нет, дыра почти наверняка есть.
  3. Сколько у меня будет ролей и что видит каждая? Попросите таблицу, а не описание словами.
  4. Что происходит с доступом, если человек не заплатил в середине оплаченного периода?
  5. Ведётся ли журнал: кто, что и когда поменял?
  6. Как человек удаляется и что от него остаётся в базе после удаления?
  7. Вход свой или арендованный, и где физически лежат данные людей?
  8. Что будет, когда бесплатный тариф сервиса входа закончится?
  9. Сколько стоит содержание в месяц через год работы?
  10. Что из этого списка можно не делать в первой версии?

Последний вопрос самый полезный. Хороший исполнитель на него ответит охотно.

Как сделать личный кабинет на сайте: с чего начать

Начните с конца. Опишите одним абзацем, что человек делает в кабинете и чего не должен видеть. Из этого абзаца вырастает всё остальное, включая цену.

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

Дальше две двери, и первая мне нравится больше.

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

Если руками не выходит или некогда, посчитаю ваш кабинет по часам и назову вилку до созвона.

Запустить кабинет самому

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

Открыть шаблон

Частые вопросы про личный кабинет

Считаю по часам: 155 белорусских рублей, или 55 долларов, ставка одна для всех работ по сайтам. Кабинет со счетами, ролями и админкой набирает от 110 часов, это семь недель и больше. Точную сумму называю после того, как посмотрю список страниц и функций, до этого честно можно назвать только вилку часов.
Дешевле кабинета. Пользователи в админке свои, поэтому половина проверок прав просто не нужна. Небольшая, на три-пять экранов, обойдётся от тридцати часов работы: около четырёх-пяти тысяч рублей и полторы-две недели. Если нужны журнал действий и права, как в магазине или сервисе, счёт идёт от шестидесяти часов, около десяти тысяч и три-четыре недели. Дешевле всего, когда на сайте уже есть вход для клиентов: админка встаёт на тот же вход.
Можно, когда под кабинетом понимают закрытые страницы для своих: вход по почте или телефону там есть, участники собираются в группы. Не получится, когда у каждого клиента должны быть свои данные, история заказов и разные права. Ролей документация кабинета не описывает, а войти можно максимум с трёх устройств.
Админкой пользуетесь вы и ваши сотрудники, а кабинетом ваши клиенты. В админке сидят свои, в кабинете улица, поэтому в кабинете проверка прав обязательна на каждом шаге. Если данные правят двое сотрудников, дешевле сделать админку.
Вход, базу и место, где всё живёт. Вход бывает арендованным сервисом или библиотекой у вас в проекте, оба варианта снимают с вас пароли и восстановление доступа. Экраны собираются из готовых наборов форм и таблиц. Руками пишутся правила доступа и логика вашего бизнеса.
Обычный сайт показывает одну и ту же страницу всем. Кабинет на каждой странице выясняет, кто её открыл и что этому человеку разрешено. Проверки не видны на макете, но занимают большую часть времени и ломаются чаще всего.
Не обязательно. Часто хватает арендованной площадки для страниц и внешних сервисов для входа и базы, своей серверной части при этом нет вовсе. Свой сервер имеет смысл, когда проект вырос и нужны контроль и предсказуемый счёт.
Нет, сайт остаётся как есть. Кабинет живёт отдельно, обычно на поддомене вроде lk.вашсайт.by, а с лендинга в него ведёт обычная кнопка «Войти». Для посетителя это один сайт, технически две разные части, и переделывать существующие страницы не нужно.

Новые посты на почту

Без спама. Отписка в один клик в любом письме.