Перейти к содержимому

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 игровых, и начинать с готовой структуры быстрее, чем с пустого поля.

← Все статьи