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

Витрина - это меньшая часть работы

Каталог, карточка услуги, корзина, кабинет клиента, история заказов. На современном фреймворке это действительно недели, а не месяцы, и именно поэтому оценка «панель за месяц» звучит правдоподобно. Дальше начинается то, чего в вёрстке не видно.

Первое неочевидное место - сам каталог. Услуга поставщика это не «название и цена»: у неё есть минимум и максимум заказа, шаг, тип, требования к ссылке и собственные правила. Тысяча позиций у поставщика превращается в тысячу строк, которые нужно обновлять, наценивать и отключать, когда поставщик их снял. Ручной каталог живёт ровно до первой недели работы, дальше нужен импорт и синхронизация. Как собирать ассортимент осмысленно - в статье каталог услуг SMM-панели.

Мост к поставщикам: похоже - не значит одинаково

Почти все поставщики отдают API в одном стиле: один адрес, действие в параметре, ключ в теле запроса. Из-за этого кажется, что достаточно написать один клиент и подставлять адреса. На практике различия начинаются сразу.

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

Диспетчер: место, где ломается всё

Заказ живёт не в момент нажатия кнопки, а следующие несколько дней. Кто-то должен ходить по незавершённым заказам, спрашивать статус, обновлять его у вас, возвращать деньги за недоставленное и делать это, пока вы спите.

Что здесь ломается у всех, кто пишет впервые:

Что значат сами статусы и что панель должна делать с каждым - в статье статусы заказов на SMM-панели.

Деньги: единственная часть без права на ошибку

Баланс клиента - это не поле в таблице, а история операций, из которой поле пересчитывается. Как только вы начнёте хранить только текущее число, первая же двойная запись превратится в спор без доказательств.

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

Обвязка, которую не считают заранее

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

Отдельно заложите нагрузку и атаки: панели регулярно ловят перебор паролей и мусорный трафик, и об этом лучше подумать до запуска, а не после. Разбор - в статье безопасность SMM-панели.

Сколько это времени и когда оно оправдано

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

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