AI-конструктор с Supabase: база, вход и файлы проекта
Да, Supabase подключается как штатная интеграция и закрывает три задачи разом: базу данных, вход пользователей и хранение файлов. Это тот случай, когда одна связка превращает сайт в приложение. Проект при этом остаётся вашим, и данные лежат в вашем проекте Supabase, а не внутри конструктора.
Когда проекту действительно нужна база?
Не всегда. Значительная часть задач решается без неё, и подключать базу «на всякий случай» это лишняя сложность на старте.
База не нужна, если содержимое меняется редко и целиком контролируется вами: визитка, лендинг, портфолио, страница мероприятия. Такой проект собирается быстрее и ломается реже, а обновляется правкой.
База нужна, как только появляется хотя бы одно из трёх. Первое: посетители создают содержимое, то есть отправляют заявки, оставляют записи, загружают файлы. Второе: у разных людей разный доступ, то есть нужен вход. Третье: данные должны пережить перезагрузку страницы и сохраниться навсегда.
Простой тест: если на вопрос «где это будет лежать завтра» ответа нет, значит, нужна база. Если содержимое живёт в самом проекте и меняется вашими руками, база пока лишняя.
Что именно даёт интеграция?
| Задача | Что появляется в проекте | Типичный пример |
|---|---|---|
| Хранение данных | Таблицы, куда проект пишет и откуда читает | Заявки, записи, товары, задачи |
| Вход пользователей | Регистрация, вход, личный кабинет | Кабинет клиента, доступ к материалам |
| Разграничение доступа | Каждый видит только своё | Трекер, где у каждого свой список |
| Файлы | Загрузка и хранение изображений и документов | Портфолио, договоры, аватары |
| Роли | Разные права у обычного пользователя и владельца | Админ видит все заявки, клиент только свои |
Ключевая строка здесь третья. «Каждый видит только своё» это не мелочь оформления, а требование к данным, и его нужно называть в описании прямо. Проект, где список задач общий для всех вошедших, и проект, где он персональный, отличаются не внешним видом, а правилами доступа.
Отсюда практическое следствие: описывайте не только сущности, но и кто что видит. Это дешевле, чем обнаружить проблему после того, как в базе появились чужие данные.
Как описать данные в промпте?
Модель хорошо переводит конкретные описания в структуру и плохо угадывает недосказанное. Работает схема из трёх частей: кто пользуется, что хранится, кто что видит.
Слабое описание: «сервис для записи клиентов». Из него непонятно почти ничего.
Сильное описание: «Сервис записи для салона. Клиент регистрируется по почте, выбирает мастера, услугу и время, видит только свои записи и может отменить их не позже чем за сутки. Мастер входит своим аккаунтом и видит своё расписание на неделю. Владелец видит все записи и может добавить или убрать мастера». Здесь есть три роли, набор полей и правило доступа, и результат будет предсказуемым.
Дальше работает цикл правок. Одна правка стоит 3 кредита, и доводка структуры данных обычно занимает несколько итераций: вы смотрите на результат, замечаете недостающее поле, дописываете. Это нормальный процесс, а не признак ошибки.
Совет, экономящий больше всего: доводите структуру данных до того, как в базе накопятся настоящие записи. Переименовать таблицу на первой неделе дёшево, на шестом месяце дорого.
Какие ошибки в структуре данных обходятся дороже всего?
Четыре промаха повторяются чаще прочих, и все они дешевы в первую неделю и дороги на полугодии.
Одно поле вместо трёх. «Адрес» одной строкой удобно писать и невозможно фильтровать. Если вы когда-нибудь захотите показать заказы по городу, город должен быть отдельным полем с самого начала.
Забытая привязка к пользователю. Записи, сохранённые без указания, чьи они, невозможно разделить задним числом. Это ровно та ошибка, из-за которой один человек видит данные другого, и обнаруживается она в худший момент.
Статус словами вместо набора значений. Если статус заказа пишется свободным текстом, через месяц в базе окажутся «оплачен», «Оплачено» и «оплата прошла», и ни один фильтр не соберёт их вместе. Перечислите допустимые значения прямо в описании.
Удаление вместо пометки. Удалённый заказ исчезает из статистики и из истории. Часто правильнее пометить запись как отменённую и оставить её в базе.
Пятое, не ошибка, а привычка: заведите поле с датой создания у каждой сущности. Оно ничего не стоит и отвечает на половину будущих вопросов о том, что и когда происходило.
Чем Supabase дополняет остальные интеграции?
| Интеграция | Её зона ответственности |
|---|---|
| Supabase | Данные, вход, файлы |
| Stripe | Деньги: разовые платежи и подписки |
| Resend | Письма от проекта |
| GitHub | Исходники в вашем репозитории |
| Vercel | Раздача проекта с вашего аккаунта |
| Google Analytics | Статистика посещений |
| Свой домен | Постоянный адрес проекта |
Продукт, у которого есть пользователи и деньги, обычно опирается на первые три строки сразу: человек входит через Supabase, платит через Stripe, получает подтверждение через Resend. Это типовая связка, и её стоит планировать целиком, а не подключать по одной по мере появления проблем.
Строка про GitHub отвечает на вопрос о независимости. Код уезжает в ваш репозиторий, данные лежат в вашем проекте Supabase, и вместе это означает, что проект не исчезает вместе с подпиской. Подробнее в статье про экспорт исходников в GitHub.
Сколько это стоит?
Подключение кредитов не расходует. Supabase это внешний сервис со своими условиями, и оплачивается он не через Zugo.
Кредиты уходят на генерацию. Сборка стоит 6 кредитов, правка 3, многостраничная платформа 12 за первые три страницы и по 3 за каждую следующую. Режим Hi-Fi вдвое дороже: сборка 12, правка 6. Бесплатный тариф даёт 5 кредитов, Pro стоит $25 в месяц за 200 кредитов, Business стоит $99 в месяц.
Проект с базой и входом это почти всегда многостраничная платформа, а не одна страница. Считайте бюджет по ней: 200 кредитов это 16 полных платформ, и на доводку каждой обычно уходит ещё несколько правок сверху.
Как проверить проект с входом перед запуском?
Приложение с пользователями проверяется иначе, чем сайт. Пройдите пять сценариев, и большая часть проблем найдётся до того, как их найдут посторонние.
Два аккаунта одновременно. Откройте проект в обычном окне и в приватном, войдите разными пользователями и убедитесь, что каждый видит только своё. Это единственная проверка, которую нельзя заменить рассуждением.
Выход и повторный вход. Данные должны остаться на месте, а не исчезнуть вместе с сессией. Если что-то пропало, значит, оно жило не в базе.
Чужая ссылка. Скопируйте адрес страницы, которую видит первый пользователь, и откройте её вторым. Если открылось чужое, правила доступа описаны неполно.
Пустое состояние. Что видит человек, который только что зарегистрировался и ещё ничего не создал. Пустая страница без подсказки это самая частая причина, по которой люди уходят на первом шаге.
Восстановление доступа. Забытый пароль случается у всех, и путь возврата должен работать до запуска, а не появляться после первой жалобы.
Проверка сборки в песочнице подтверждает, что проект открылся, и снижает риск белого экрана. Все пять сценариев выше она не проходит: это ваша часть работы, и занимает она примерно двадцать минут.
Где проходят честные границы?
Три вещи стоит сказать прямо.
Сгенерированная структура данных это хороший черновик, а не финальная модель. Просмотрите таблицы сами, пока записей мало. Особенно если проект будет расти в сторону, о которой вы в первом описании не упоминали.
Правила доступа заслуживают отдельной проверки. Любое приложение с личными данными, собранное конструктором или руками, требует ответа на вопрос, кто что может прочитать. Проверяйте это до того, как в базе появятся чужие данные, а не после.
Zugo не заменяет команду разработки на сложном продукте. Специфичная бизнес-логика доводится правками, и в какой-то момент дешевле выгрузить код и продолжить руками, чем описывать словами то, что проще написать.
Что делать дальше
Начните с описания по схеме «кто, что, кто что видит», соберите первую версию и посмотрите на структуру данных до того, как заносить настоящие записи. Дальше доводите правками.
Более подробный разбор связки с примерами промптов есть в статье про AI-приложение с Supabase. Собрать проект с базой и входом и проверить структуру можно на zugo.dev: в каталоге 25 готовых шаблонов, из них 5 игровых, и начинать с готовой структуры быстрее, чем с пустого поля.