Что входит в проект веб-приложения или MVP
Формат работы мы подстраиваем под конкретную задачу. В предложении указано, какие из этих результатов входят в проект, кто предоставляет исходные материалы и как принимается каждый этап.
- Объём первой версии: ключевой сценарий, роли и то, что подождёт
- Основные экраны с продуманными пустыми состояниями, состояниями загрузки и ошибок
- Модель данных, правила доступа на сервере и тесты, которые пытаются их взломать
- Аккаунты, роли и приглашения в команду
- Платежи или подписки, подтверждаемые проверенными обратными вызовами провайдера
- Админ-панель, события продуктовой аналитики и мониторинг ошибок
- Развёртывание, документация и передача репозитория и аккаунтов
С чего начать: веб-приложение, сайт или дизайн продукта?
Выбирайте это, когда клиентам или сотрудникам нужно входить в продукт и выполнять там работу: покупать, бронировать, отправлять, согласовывать или управлять чем-то. Если нужен сайт, который объясняет и продаёт ваше предложение, лучше подойдёт Web Development. Если сценарий ещё не определён, начните с Product Design и разрабатывайте продукт после того, как основные экраны проверят на пользователях.
Как создаётся первая версия
Мы начинаем с этапа определения объёма: пользователи и роли, единственный сценарий, который должна выполнять первая версия, данные, которые создаёт каждый шаг, и решения, влияющие на стоимость, например платежи, интеграции и права доступа. Результат — письменное описание объёма, кликабельные основные экраны и план релиза с перечнем того, что отложено.
Затем мы работаем короткими циклами на тестовом окружении, которым можно пользоваться. Первая веха — тонкий срез ключевого сценария, работающий от начала до конца, с настоящим входом и настоящими правилами для данных; только потом заполняются остальные экраны. Запуск включает мониторинг в production, возможность отката и передачу репозитория, хостинга, базы данных, платёжных и аналитических аккаунтов на ваше имя.
Что должно войти в первую версию MVP?
В первой версии должно быть всё, что нужно реальному пользователю для выполнения одного сценария, и ничего из того, что важно лишь при масштабе, которого вы ещё не достигли. На практике это пять вещей: аккаунты с ролями, которых требует сценарий, сам ключевой сценарий, админ-панель, чтобы команда могла видеть и исправлять записи без разработчика, платежи, если бизнес-модель предполагает оплату с первого дня, и события аналитики, показывающие, где пользователи останавливаются.
Откладывайте то, что можно делать вручную или купить позже: нативное мобильное приложение, единый вход (SSO) для корпоративных клиентов, настраиваемую матрицу прав, вторую интеграцию, чат в приложении и отчёты, которые никто не просил. Каждый отложенный пункт всё равно получает строку в описании объёма, чтобы в модели данных осталось для него место.
Большинство продуктов собирается из знакомых модулей. Два из них стоит отметить: бронирование и планирование, а также воронка заявок для малого бизнеса, который сегодня ведёт обращения вручную. Оба кажутся простыми, но скрывают решения о часовых поясах, статусах и ответственных, которые дешевле принять ещё на бумаге.
| Модуль | Что нужно | Что решить до разработки |
|---|---|---|
| Аккаунты и роли | Регистрация, вход, восстановление доступа и проверка роли при каждом запросе к серверу | Какие есть роли и может ли один человек состоять в нескольких организациях? |
| Приглашения в команду | Ссылки-приглашения с ограниченным сроком действия, количество мест, передача владения, удаление с мгновенным отзывом доступа | Кто может приглашать и что происходит с записями удалённого участника? |
| Оплата и тарифы | Размещённая платёжная страница или подписки, проверенные обратные вызовы, лимиты тарифов, контролируемые на сервере | Что входит в каждый тариф и что происходит при неудачной оплате? |
| Бронирование и планирование | Правила доступности, часовые пояса, буферы, защита от двойного бронирования, напоминания, перенос записей | Кто задаёт доступность и удерживается ли слот, пока клиент платит? |
| Воронка обращений и лидов | Форма с защитой от спама, статусы от нового до выигранного или потерянного, назначение ответственного, источник, запись о согласии | Какими статусами команда пользуется на самом деле и куда лид попадает дальше? |
| Админ-панель и отчётность | Поиск, история записей, ручные исправления, экспорт | Какие показатели команда смотрит каждую неделю и кто может редактировать записи? |
| Собственные домены | Подключение хоста, проверка DNS, статус сертификата, проверка тарифа | Какие тарифы включают домен и какие ограничения хостинга действуют? |
| Журнал аудита | Неизменяемая запись о том, кто, что и когда изменил | Какие действия должны быть доступны для отслеживания вашим клиентам или аудиторам? |
| Уведомления | Сообщения по email и в приложении, шаблоны, журнал доставки, настройки пользователя | Какие события о чём и кого уведомляют и какие уведомления можно отключить? |
Какой стек использует Dardo и когда выбирает другой?
По умолчанию мы используем TypeScript во всём проекте: Astro для страниц, отрисовываемых на сервере, и интерактивных «островов», Cloudflare Workers для хостинга и API, Cloudflare D1 или Postgres для данных и PostHog для аналитики и экспериментов. Superame работает на Astro, а его рейтинг хранится в Neon Postgres. Один язык и одна платформа развёртывания упрощают эксплуатацию и передачу небольшого продукта.
Мы выбираем иной стек, если этого требует продукт. Насыщенный интерфейс, который остаётся открытым весь день, может оправдать клиентское React-приложение, как в прототипе Shiimain. Долгие фоновые задачи, тяжёлая обработка данных или собственная команда, уже работающая на другом фреймворке, тоже меняют ответ. Если после запуска код будет поддерживать ваша команда разработчиков, обычно выигрывает их стек.
Контроль доступа мы проверяем в первую очередь. В OWASP Top 10:2025 Broken Access Control по-прежнему на первом месте, и, по данным OWASP, он в той или иной форме обнаружился в каждом протестированном приложении. Мы проверяем права на сервере при каждом запросе, по умолчанию запрещаем доступ, ограничиваем каждый запрос организацией вошедшего пользователя и пишем автоматические тесты, которые пытаются прочитать записи другого клиента.
Как должна работать оплата в веб-приложении?
Платёж подтверждает платёжный провайдер, и делает он это на сервере; возврат браузера со страницы оплаты ничего не подтверждает. Этот подход показывает Superame — публичный рейтинг проектов из опубликованных работ Dardo. Покупатели платят на размещённой на стороне Dodo Payments странице оплаты, поэтому данные карты никогда не попадают в приложение. Затем провайдер отправляет подписанный callback, а сервер проверяет подпись и данные платежа, прежде чем начислить кредит.
Возвраты и споры проходят тот же путь. Каждое событие провайдера применяется один раз, поэтому callback, пришедший дважды, с опозданием или не по порядку, не сможет дважды начислить или списать кредит. Superame не публикует данные о числе пользователей или выручке: это подтверждение того, как устроена платёжная логика, а не продаж.
- Покупателю, закрывшему вкладку до перенаправления, кредит всё равно начисляется, когда приходит callback.
- Повторно отправленный или поддельный callback отклоняется.
- Возврат или спор отменяет ровно то, что дал исходный платёж.
- Лимиты тарифов проверяются на сервере, а не просто скрываются в интерфейсе.
- Тестовые и рабочие ключи — это отдельные секреты, и они никогда не хранятся в репозитории.
Позвольте клиентам использовать собственные домены
Клиенты B2B SaaS часто хотят видеть продукт на своём адресе, например portal.theircompany.com. Cloudflare for SaaS решает это с помощью custom hostnames: тарифы Free, Pro и Business включают 100, каждое дополнительное имя хоста стоит $0.10, а максимум — 50 000. Wildcard custom hostnames доступны только в Enterprise.
Ваш клиент добавляет CNAME-запись, указывающую на ваш target. Использовать A-запись для этого target, что потребовалось бы корневому домену, по умолчанию не поддерживается, а проксирование apex — дополнение только для Enterprise, поэтому большинству клиентов стоит использовать поддомен. Сертификаты проверяются по HTTP, TXT или электронной почте, либо с помощью Delegated DCV — одноразовой записи, которая позволяет Cloudflare продлевать их автоматически. Их выпускают Let's Encrypt, Google Trust Services или SSL.com.
Не менее важна продуктовая часть вокруг этого: подключать домен могут только платные тарифы, экран онбординга показывает точную запись для добавления, статус проверки простым языком объясняет состояния «ожидание» и «ошибка», а мониторинг предупреждает вашу команду, если сертификат не удаётся продлить из-за того, что клиент изменил свой DNS. У других хостингов другие лимиты: Vercel допускает 50 доменов на проект на тарифе Hobby и неограниченное число на Pro и Enterprise, с мягкими лимитами 100 000 и 1 000 000; Netlify рекомендует не более 50 доменных алиасов на сайт.
Вопросы перед выбором
От чего зависит стоимость веб-приложения или MVP?
Стоимость зависит от числа ролей, сложности основного процесса, платежей, интеграций и объёма данных, которые нужно перенести. Права доступа и состояния важнее количества экранов: один экран с пятью ролями и этапом согласования — это больше работы, чем пять экранов только для чтения. Мы оцениваем письменно зафиксированный объём работ после этапа проработки задачи, а не называем ставку за отдельную функцию.
Сколько времени занимает создание первой версии?
Это зависит от того, насколько определён рабочий процесс, как быстро приходят решения и материалы и нужно ли третьим сторонам, например платёжному провайдеру или ИТ-команде клиента, одобрять доступ. В предложении указаны этапы, начиная с работающего фрагмента основного процесса. Дата полного релиза фиксируется после принятия этого фрагмента.
Может ли Dardo взять на себя существующую кодовую базу?
Да, после аудита. Мы изучаем репозиторий, зависимости, модель данных, проверки доступа, развёртывание и то, кто управляет каждым аккаунтом, а затем сообщаем, что можно оставить, что нужно исправить в первую очередь и что разумнее: доработка или переписывание. Мы не обещаем сохранить или заменить кодовую базу, пока не прочитали её.
Вы разрабатываете нативные приложения для iOS и Android?
Нет. Dardo работает с вебом, включая устанавливаемые веб-приложения, которые открываются с иконки на домашнем экране. Если продукт зависит от функций устройства, недоступных в браузере, от распространения через магазины приложений или от интенсивной офлайн-работы, лучше подойдёт нативное приложение, и мы скажем об этом прямо. Веб-приложение и его API при этом могут служить бэкендом для нативной команды.
Кому принадлежат код и аккаунты?
Вам. Репозиторий, хостинг, база данных, домен, аккаунты платёжного провайдера и аналитики создаются на ваше имя или передаются при сдаче проекта, а в предложении перечислены все лицензируемые зависимости, которые нельзя передать. У Dardo остаётся только тот доступ, который вы предоставите для поддержки.
Что вам нужно от нас?
Человек, принимающий решения, который может отвечать на вопросы по объёму работ в течение нескольких дней, доступ к системам, с которыми должен связываться продукт, и реальные примеры данных и документов, используемых в рабочем процессе. Откройте аккаунт платёжного провайдера на имя вашей компании заранее, так как провайдеры проверяют бизнес, прежде чем включить боевые платежи.
Что происходит после запуска?
В предложение можно включить период поддержки: исправление ошибок, мониторинг и небольшие доработки, пока приходят первые реальные пользователи. После этого дальнейшая разработка согласуется как ежемесячный объём работ или как новый проект. Обновления безопасности и обновления зависимостей не бывают необязательными, поэтому в любом случае за ними должен быть закреплён ответственный.
Из блога
- Кастомные домены для SaaS: как дать клиентам использовать собственный домен с Cloudflare for SaaS
Как позволить клиентам подключать свой домен к вашему SaaS через Cloudflare for SaaS: как работает проверка, сколько это стоит на октябрь 2026 года и где возникают проблемы.
Источники и дополнительные материалы
Источники, на которых основана эта страница, с дополнительными подробностями от первоначальных издателей.
- OWASP Top 10:2025, A01 Broken Access Control (нарушение контроля доступа)top10.owasp.org
- Cloudflare for SaaS: тарифы и лимиты на кастомные хостнеймыdevelopers.cloudflare.com
- Cloudflare for SaaS: быстрый старт (CNAME-цель и A-записи)developers.cloudflare.com
- Cloudflare for SaaS: методы проверки сертификатовdevelopers.cloudflare.com
- Cloudflare: центры сертификацииdevelopers.cloudflare.com
- Vercel: лимиты (количество доменов на проект)vercel.com
- Netlify: добавление псевдонима доменаdocs.netlify.com

