Перейти к содержимому
supastack
Обзор документации
MobileExpo

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /ru/docs/web/first-feature.md (or send Accept: text/markdown).

Создайте первую функцию

Сквозной путь от схемы до выпущенного экрана.

Задать вопрос об этом руководстве
Открыть в

Прохождение для начинающих

Предварительные требования: прочтите два приведенных ниже руководства для начинающих, завершите локальную веб-настройку и откройте этот монорепозиторий в корневой папке вашего редактора. Веб-настройки принадлежат apps/web/.env.local; Next.js не читает корень .env. /dashboard в поддельном режиме по умолчанию представляет собой демонстрацию без базы данных; /auth требуется перенесенная база данных.

Вкратце: рабочее пространство — это отдельные пользователи, данные и настройки одной команды. Сервер является доверенным сервером; не допускайте попадания ключей провайдера в код браузера и телефона. Миграция — это изменение версии базы данных, при котором создаются или обновляются таблицы. Модель ИИ — это механизм, который отвечает; Каталог моделей — это список доступных идентификаторов моделей и цен на сервере. Поставщик — это внешняя служба, такая как служба искусственного интеллекта, электронной почты или службы выставления счетов. Право — это грант, который позволяет рабочей области использовать функцию. Вебхук — это сообщение, которое одна служба отправляет на URL другой службы.

1. Откройте VS Code в корне репозитория и попросите своего агента кодирования создать apps/web/app/reports/page.tsx и apps/web/src/reports.ts. Дайте ему поля отчета и разрешенные роли; требуют проверки членства на стороне сервера и запроса, отфильтрованного по workspaceId.

2. Откройте /reports как вошедший в систему участник и убедитесь, что отображаются записи рабочей области.

3. Попробуйте выйти из системы и использовать учетную запись второго рабочего пространства; если кто-либо из них может читать записи, остановитесь и исправьте проверку сервера.

Для пользовательского кода начните с предоставленного prompts/README.md и скопируйте ближайшее приглашение: prompts/new-app-screen.md для экрана приложения или prompts/new-landing-page.md для общедоступной страницы. Для работы с сервером, базой данных или провайдером дайте своему агенту кодирования задание из этого руководства и попросите его прочитать AGENTS.md, .ai/PROJECT_CONTEXT.md и соответствующие зеркала .ai/; проверьте точные исходные файлы, указанные здесь; список файлов и проверки перед редактированием; сохранять права собственности на рабочую область и секреты, доступные только серверу; и покажу вам разницу. Сообщите ему желаемое поведение, поля ввода и вывода, разрешенные роли, ожидаемые успехи и ошибки, а также тестовую учетную запись, поставщика или устройство. Используйте выборочные значения; никогда не вставляйте настоящий секрет.

Создать маршрут

Добавьте страницу под apps/web/app/. Начните с информационной панели или маршрута содержимого, чтобы повторно использовать разрешение сеанса и активной рабочей области. Маршрут существует, если его папка содержит page.tsx; используйте серверный компонент для защищенного чтения.

apps/web/app/reports/page.tsx
apps/web/src/reports.ts
.ai/apps/web/app/reports/page.md
.ai/apps/web/src/reports.md

Разрешение владения на сервере

Прочтите вошедшее в систему удостоверение и активную рабочую область с помощью существующих помощников аутентификации/рабочей области. Подтвердите членство перед загрузкой записей. Фильтровать каждый запрос по разрешенному workspaceId; никогда не берите идентификатор владельца из выходных данных формы или модели.

Проверьте разрешения владельца/администратора для действий по управлению. Если функция оплачена, проверьте ее права на границе чтения или действия, прежде чем возвращать защищенные данные; скрытая кнопка не обеспечивает доступ.

Проверка доступа и восстановления

Проверьте анонимный доступ, допустимого участника, участника другой рабочей области, отозванный сеанс и требуемую роль. Добавьте пустые состояния и состояния неудачной загрузки с помощью действия восстановления. Уберите этот маршрут из общедоступной карты сайта и добавьте его префикс в файл robots disallows.

Смоделируйте запись

Каждая продуктовая запись начинается со схемы базы данных. Добавьте таблицу в packages/db с колонкой workspaceId, сгенерируйте миграцию и напишите репозиторные хелперы, которые разрешают workspace перед чтением или записью.

// packages/db/src/schema.ts
export const ideas = pgTable("idea", {
  id: uuid().primaryKey(),
  workspaceId: uuid().notNull().references(() => workspaces.id),
  title: text().notNull(),
  createdAt: timestamp().defaultNow(),
});

corepack pnpm --filter @supastack/db db:generate

Авторизуйте действие

Создайте server action, который разрешает сессию, workspace и entitlement именно в этом порядке. Валидируйте ввод zod-схемой, выполняйте мутацию через репозиторий и возвращайте типизированный результат, который интерфейс может отрисовать.

Порядок важен: мутация, пишущая до проверки владения workspace, уже пересекла границу. Выводите владение на сервере — никогда не доверяйте workspace id, присланному браузером.

Соберите поверхность

Собирайте страницу из общих компонентов и токенов — blocks кита и примитивы ui-web покрывают типовые паттерны. Обрабатывайте состояния загрузки, ошибки и пустоты; функция, рендерящая только счастливый путь, не завершена.

Часто задаваемые вопросы

14 вопросов

Что такое supastack?

supastack — модульная основа для создания SaaS-продуктов с AI. Она объединяет общую инфраструктуру, чтобы вы могли сосредоточиться на продуктовых функциях.

Поддерживает ли он web и mobile?

Да. supastack включает приложения Next.js и Expo как отправные точки для web- и мобильных интерфейсов.

Какая аутентификация включена?

Better Auth покрывает e-mail/пароль, OTP и социальный вход. Личные воркспейсы провижинируются вместе с аккаунтом, чтобы продуктовые записи были ограничены с первого дня.

Как он поддерживает AI?

supastack включает настраиваемый мультипровайдерный AI, учёт использования, бюджеты и зашифрованную поддержку bring-your-own-key.

Как обрабатываются подписки?

Для продуктов на ките Stripe-биллинг, подписки и права доступа образуют основу платного доступа. Секреты провайдеров остаются только на сервере.

Где живёт мой продуктовый код?

Продуктовые функции остаются в отдельном коде, а продукт настраивает и интегрирует модули основы supastack.

Как устроены цены supastack?

Кит — разовая покупка с пожизненными обновлениями: один фреймворк за $249 (временная стартовая цена — скидка $100 от стандартной цены $349) или все фреймворки (Next.js, iOS, Android) за $499 (временная стартовая цена — скидка $100 от стандартной цены $599), плюс $75 за каждое дополнительное место разработчика. Без подписки на кит. Оплата на этом сайте доставляет лицензионный ключ по e-mail, доступ к репозиторию — через приглашение GitHub.

Как воркспейсы ограничивают мои данные?

Записи пользователей ограничены по workspaceId. Идентичность, права доступа, AI-использование, события биллинга и записи аудита остаются внутри границы личного воркспейса.

Как работают фоновые задачи?

Trigger.dev — явный рантайм задач. Контракт JobRunner обещает только enqueue, status и cancel — семантика workflow остаётся специфичной для Trigger.dev и явной.

Чем почта отличается от рассылок?

Транзакционная почта покрывает продуктовые сценарии вроде уведомлений о завершении. Холодные рассылки и кампании — забота продукта, вне почтового модуля этого кита.

Как работают покупки в мобильном приложении?

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

Где хранятся ключи AI-провайдеров?

Bring-your-own-key креденшелы зашифрованы и остаются только на сервере. Ключи удаляются из логов; использование и бюджеты видны на уровне воркспейса.

Какие способы оплаты принимает оформление заказа?

Оформление заказа на Stripe принимает карты, а после включения кошельков в аккаунте Stripe может также предлагать Alipay и WeChat Pay — удобно для покупателей из Китая. Авторизации кошельков подтверждаются асинхронно, поэтому страница лицензии обновляется, как только платёж завершается.

Могу ли я получить возврат средств?

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

RU
Тема