Pular para o conteúdo
supastack
Explorar a documentação

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 /pt/docs/modules/database.md (or send Accept: text/markdown).

Módulo de base de dados

O schema Drizzle e os helpers de persistência por onde flui cada registo.

Instalação e configuração

Antes de qualquer etapa, leia Antes de começar e Noções básicas sobre terminal. Estas instruções presumem que você abriu o monorepo supastack completo no VS Code; sua raiz package.json marca a raiz do repositório. Nos comandos pnpm, um pacote de espaço de trabalho é um aplicativo ou uma pasta de código compartilhado; no produto, um espaço de trabalho é o contêiner de dados e o limite de segurança de uma equipe. corepack pnpm --filter ... seleciona um pacote do monorepo enquanto os comandos são executados a partir de sua raiz. Se você abriu apenas uma pasta móvel ou desktop sincronizada, ela não contém o back-end da Web, a configuração do Docker ou os scripts raiz: execute o back-end deste monorepo ou de um servidor hospedado acessível e use os próprios scripts da pasta da plataforma. Uma variável de ambiente é uma configuração nomeada armazenada em um arquivo .env local ou no painel de hospedagem; reinicie o aplicativo relevante após alterá-lo e mantenha os segredos do servidor fora dos valores NEXT_PUBLIC_ e EXPO_PUBLIC_.

1. Instale e inicie Docker Desktop.

2. Copie .env.example para .env na raiz para ferramentas de migração e para apps/web/.env.local para Next.js (PowerShell: Copy-Item .env.example .env; Copy-Item .env.example apps/web/.env.local. macOS/Linux/Git Bash: cp .env.example .env; cp .env.exemplo apps/web/.env.local). Mantenha DATABASE_URL igual em ambos os arquivos; o exemplo já corresponde ao banco de dados Docker local.

3. Na raiz do repositório, execute docker compose up -d postgres e docker compose ps; espere até que o postgres reporte saudável.

4. Execute corepack pnpm --filter @supastack/db db:migrate da raiz para aplicar as migrações já enviadas com o kit. Somente após editar packages/db/src/schema.ts, execute db:generate, inspecione o SQL gerado e execute db:migrate. Esperado: o contêiner Postgres local está íntegro e o aplicativo Web usa seu banco de dados migrado. Nunca aponte esta primeira execução para a produção.

Configura DATABASE_URL para a base Postgres alvo no ambiente de servidor. Usa uma base descartável separada para aceitação de integração. Nunca apontes migrações de teste para uma base de produção.

O workspace de base de dados exporta definições de esquema e helpers de persistência. Reveja packages/db/src/schema.ts e o diretório de migrações antes de introduzir uma tabela ou coluna.

docker compose up -d postgres
docker compose ps
corepack pnpm --filter @supastack/db db:migrate

# Only after changing packages/db/src/schema.ts:
corepack pnpm --filter @supastack/db db:generate
corepack pnpm --filter @supastack/db db:migrate

Comandos para copiar

Siga os comentários para ver em qual pasta um comando é executado. Se dois terminais estiverem rotulados, abra duas janelas de terminal e mantenha o primeiro comando em execução enquanto usa o segundo.

# Choose one copy method for your terminal:
# PowerShell:
Copy-Item .env.example .env
Copy-Item .env.example apps/web/.env.local

# macOS/Linux/Git Bash alternative:
# cp .env.example .env
# cp .env.example apps/web/.env.local

docker compose up -d postgres
docker compose ps
corepack pnpm --filter @supastack/db db:migrate

Fluxo de implementação

Gera uma migração depois de modificar o esquema, inspeciona o SQL gerado e committa-o com a alteração de esquema. Planeia como os registos existentes recebem valores antes de adicionar uma coluna obrigatória.

Inclui workspaceId em cada registo pertencente ao utilizador e transporta esse limite através de leituras e escritas. Usa histórico imutável de modelo-preço para contabilidade de IA em vez de reescrever preços referenciados por registos de utilização existentes.

Verificação e resolução de problemas

Se o Docker disser que não consegue se conectar ao seu mecanismo, inicie o Docker Desktop e espere que ele termine de carregar. Se o postgres não estiver íntegro, execute docker compose logs postgres da raiz e corrija esse erro antes de migrar. Se a Web disser que DATABASE_URL está faltando, verifique apps/web/.env.local; se db:migrate não puder se conectar, verifique o .env raiz. Se você alterar os bancos de dados, atualize ambos os arquivos. Leia a primeira instrução de migração com falha antes de tentar novamente; nunca repita isso contra a produção.

Aplica migrações numa base isolada e corre sobre ela os testes condicionados pela base. Credenciais em falta devem produzir uma porta explicitamente ignorada, não uma afirmação de persistência bem-sucedida. Se uma migração falhar, inspeciona que instrução falhou e o esquema atual antes de tentar de novo.

Perguntas frequentes

14 perguntas

O que é o supastack?

O supastack é uma base modular para construir produtos SaaS com IA. Reúne a infraestrutura comum para que possas concentrar-te nas funcionalidades próprias do teu produto.

Suporta web e mobile?

Sim. O supastack inclui apps Next.js e Expo como pontos de partida para experiências web e mobile.

Que autenticação está incluída?

O Better Auth cobre email/palavra-passe, OTP e login social. Os workspaces pessoais são aprovisionados com a conta para que os registos fiquem delimitados desde o primeiro dia.

Como é suportada a IA?

O supastack inclui IA multi-fornecedor configurável, registo de utilização, orçamentos e suporte encriptado de chaves próprias (BYOK).

Como são geridas as subscrições?

Para produtos construídos sobre o kit, a faturação Stripe, as subscrições e as permissões formam a base do acesso pago. Os segredos de fornecedor ficam no servidor.

Onde vive o código próprio do meu produto?

As funcionalidades próprias do produto ficam num codebase separado, enquanto o produto configura e integra os módulos base do supastack.

Como funciona o preço do supastack?

O kit é uma compra única com atualizações vitalícias: Uma framework por 249 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 349 $) ou Todas as frameworks (Next.js, iOS, Android) por 499 $ (preço de lançamento temporário — 100 $ de desconto sobre o preço normal de 599 $), mais 75 $ por lugar de programador adicional. Sem subscrição do kit. O checkout neste site entrega a tua chave de licença por email, com acesso ao repo por convite GitHub.

Como é que os workspaces delimitam os meus dados?

Os registos do utilizador são delimitados por workspaceId. Identidade, permissões, utilização de IA, eventos de faturação e entradas de auditoria ficam dentro do limite do workspace pessoal.

Como funcionam os jobs em segundo plano?

O Trigger.dev é o runtime de jobs explícito. O contrato JobRunner só promete enqueue, status e cancel — a semântica de workflow permanece específica e explícita do Trigger.dev.

Como difere o email da divulgação?

O email transacional cobre fluxos de produto como avisos de conclusão de tarefas. A divulgação fria e as campanhas pertencem ao próprio produto, fora do módulo de email deste kit.

Como funcionam as compras no aplicativo móvel?

O aplicativo móvel inclui compras nativas e restauração via RevenueCat, com acesso verificado pelo servidor. Configure as contas das lojas e conclua os testes em dispositivos antes de publicar. A cobrança web permanece separada.

Onde residem as chaves dos fornecedores de IA?

As credenciais BYOK são encriptadas e ficam no servidor. As chaves são higienizadas nos logs; a utilização e os orçamentos ficam visíveis ao nível do workspace.

Quais métodos de pagamento o checkout aceita?

O checkout hospedado na Stripe aceita cartões e também pode oferecer Alipay e WeChat Pay quando essas carteiras estiverem ativadas na conta Stripe — útil para compradores na China. As autorizações de carteira são confirmadas de forma assíncrona, então a página da licença é atualizada assim que o pagamento é liquidado.

Posso solicitar um reembolso?

Depois de obter acesso ao repositório, o supastack é seu para sempre, portanto não pode ser reembolsado. Mas fique tranquilo: você recebe o código-fonte completo com atualizações vitalícias para criar e lançar produtos ilimitados para você ou seus clientes. Você apenas não pode revender o código nem redistribuir o repositório como starter kit ou modelo.

PT
Tema