Naar inhoud gaan
supastack
Blader door de docs
WebNext.js

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 /nl/docs/web/provider-keys.md (or send Accept: text/markdown).

De resterende providersleutels verzamelen

Korte walkthroughs voor de diensten die overblijven: AI-providers, Trigger.dev, S3-opslag, Sentry of PostHog, Turnstile en uw domein.

Hoe deze pagina te gebruiken

Elke sectie hieronder is één complete setup-walkthrough: maak het account, vind de sleutel, stel de env-namen in, verifieer. Neem alleen de secties voor diensten die uw product shippt — een site zonder AI-features heeft de eerste nooit nodig, en de kit blijft draaien met elke sectie hier overgeslagen.

Dezelfde geheimregels als overal: API-sleutels en webhookgeheimen blijven server-only, alleen waarden met het voorvoegsel NEXT_PUBLIC_/EXPO_PUBLIC_ mogen de client bereiken, productiegeheimen leven in de geheimopslag van de host, en de devserver leest env pas opnieuw bij een herstart.

AI-providersleutels

De AI_PROVIDER van de kit accepteert openai, anthropic, openai-compatible en openrouter — plus fake, de standaard lokale stand-in. Kies er een; de providersleutel is het enige benodigde account, want model-id's en prijzen komen uit de databasecatalogus van de kit, niet uit env-variabelen.

OpenAI: platform.openai.com → API keys → Create new secret key → kopieer sk-… → OPENAI_API_KEY. Anthropic: console.anthropic.com → API Keys → Create Key → sk-ant-… → ANTHROPIC_API_KEY. Beiden factureren per token — een paar dollar krediet dekt ontwikkeling.

OpenRouter routeert elk catalogusmodel via één sleutel: openrouter.ai → Keys → Create Key → sk-or-… → AI_PROVIDER=openrouter plus OPENROUTER_API_KEY; optionele OPENROUTER_APP_NAME/OPENROUTER_SITE_URL sturen attributieheaders. openai-compatible dekt elk OpenAI-vormig endpoint: OPENAI_COMPATIBLE_API_KEY plus OPENAI_COMPATIBLE_BASE_URL.

Verifieer: herstart, voer één AI-taak uit en verwacht een echt modelantwoord in plaats van de deterministische nep. Een opstartfout die de sleutel noemt betekent dat de providervlag aan staat zonder zijn sleutel. Een echt antwoord heeft ook JOB_PROVIDER=trigger uit de Trigger.dev-sectie hieronder nodig plus één ingeschakeld model in de catalogus van de kit — AI instellen behandelt die setup.

# apps/web/.env.local — pick ONE provider
AI_PROVIDER=openai
OPENAI_API_KEY=sk-…

# or AI_PROVIDER=anthropic
# ANTHROPIC_API_KEY=sk-ant-…

# or AI_PROVIDER=openrouter
# OPENROUTER_API_KEY=sk-or-…

# or AI_PROVIDER=openai-compatible
# OPENAI_COMPATIBLE_API_KEY=…
# OPENAI_COMPATIBLE_BASE_URL=https://your-endpoint/v1

Trigger.dev

Sla over tenzij het product echte achtergrondtaakruns nodig heeft — JOB_PROVIDER=local plaatst jobs in de wachtrij in het geheugen zonder ze uit te voeren, wat goed is voor ontwikkeling.

1. Open app.trigger.dev → meld u aan → maak een project.

2. Kopieer twee waarden: de project-ref proj_… uit de settings van het project of de dashboard-URL → TRIGGER_PROJECT_REF, en de geheime sleutel van de API keys-pagina van het project (tr_dev_… voor de dev-omgeving, tr_prod_… voor productie) → TRIGGER_SECRET_KEY. Beiden blijven server-only.

3. De taken van de kit leven al in apps/web/trigger en apps/web/trigger.config.ts leest TRIGGER_PROJECT_REF. Voer vanuit apps/web npx trigger.dev@latest dev uit — het registreert de taken bij uw project en voert ze lokaal uit tegen de dev-sleutel.

Verifieer: het dev-commando logt de geregistreerde taken; zet er een in de wachtrij in de app en zie het uitvoeren in de Runs-lijst van het dashboard. Gedeployde omgevingen voeren corepack pnpm --filter @supastack/web trigger:deploy uit om de taakset te publiceren.

# apps/web/.env.local
JOB_PROVIDER=trigger
TRIGGER_PROJECT_REF=proj_…
TRIGGER_SECRET_KEY=tr_dev_…   # tr_prod_… in production

# run the worker alongside the app, from apps/web:
cd apps/web
npx trigger.dev@latest dev

S3-compatibele opslag (Cloudflare R2)

Sla over tenzij het product bestanden opslaat — STORAGE_PROVIDER=memory houdt uploads in-proces voor ontwikkeling.

Elke S3-compatibele bucket werkt; Cloudflare R2 is de gratis-tier-vriendelijke keuze. 1. Open dash.cloudflare.com → R2 Object Storage → Create bucket, geef het een naam en behoud de standaard locatiehint.

2. Open terug op het R2-overzicht Manage R2 API Tokens → Create API token → permissie Object Read & Write, gescoped naar die bucket → Create. Kopieer de Access Key ID, de Secret Access Key en het getoonde S3-endpoint — https://<account-id>.r2.cloudflarestorage.com.

3. Stel de env-namen hieronder in. STORAGE_REGION=auto is de R2-conventie — de kit gebruikt standaard us-east-1, wat R2 ook accepteert. STORAGE_FORCE_PATH_STYLE staat standaard al aan voor custom endpoints, wat R2 wil. Publieke bestanden serveren heeft bovendien STORAGE_PUBLIC_BASE_URL of CDN-bedrading nodig; private bestanden hebben niets meer nodig.

Verifieer: herstart en upload via de app — het object verschijnt in de R2-bucketbrowser. Een signature- of 403-fout betekent dat het token geen object read/write op die bucket heeft; maak een vers token dat correct gescoped is.

# apps/web/.env.local
STORAGE_PROVIDER=s3
STORAGE_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
STORAGE_REGION=auto
STORAGE_BUCKET=your-bucket
STORAGE_ACCESS_KEY_ID=…          # server-only
STORAGE_SECRET_ACCESS_KEY=…      # server-only
# STORAGE_PUBLIC_BASE_URL=       # optional public-URL base

Sentry of PostHog (optioneel)

Volledig optioneel: elke observability-waarde is standaard unset en de kit draait prima zonder — voeg dit toe wanneer u foutrapporten en analytics in productie wilt.

Sentry voor fouten: sentry.io → maak een project → kies het Next.js-platform → het setupscherm toont de DSN https://…@….ingest.sentry.io/… → SENTRY_DSN. Exceptions bereiken dan Sentry getagd met correlation-id's; de gratis tier is genoeg om te beginnen.

PostHog voor productanalytics in plaats daarvan: posthog.com → maak een project → kopieer de project-API-sleutel phc_… → NEXT_PUBLIC_POSTHOG_KEY plus NEXT_PUBLIC_POSTHOG_HOST (https://us.i.posthog.com, of uw EU-host). Die twee zijn by design publieke browserwaarden; SENTRY_DSN blijft server-side. ALERT_WEBHOOK_URL post optioneel faal-meldingen naar een Slack-compatibel endpoint.

Verifieer: herstart, veroorzaak een testexception (of speel Sentry's sample-event af) en bevestig dat het in de Issues-lijst van het project landt.

# apps/web/.env.local — all optional
SENTRY_DSN=https://…@….ingest.sentry.io/…

NEXT_PUBLIC_POSTHOG_KEY=phc_…
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com

# ALERT_WEBHOOK_URL=https://hooks.slack.com/services/…

Cloudflare Turnstile

Botbescherming voor de publieke formulieren en credential-endpoints — CAPTCHA_PROVIDER=off is standaard, dus voeg het toe voordat u registratie voor vreemden opent. Gratis.

1. Open dash.cloudflare.com → Turnstile → Add widget → geef het een naam en vermeld de hostnamen: localhost voor ontwikkeling plus uw echte domein → Create.

2. Kopieer beide waarden: de Site Key — publiek by design, hij rendert in het widget → NEXT_PUBLIC_TURNSTILE_SITE_KEY — en de Secret Key, die de server gebruikt om te verifiëren → TURNSTILE_SECRET_KEY.

3. CAPTCHA_PROVIDER=turnstile schakelt het in; het opstarten faalt met de naam van welke sleutel ook ontbreekt. De captcha-gids somt exact op welke oppervlakken het widget beschermt.

Verifieer: open /auth of het contactformulier — het widget rendert; inzendingen zonder opgeloste uitdaging worden geweigerd. Als het widget nooit laadt, staat de hostnaam die u bekijkt niet op de lijst van het widget.

# apps/web/.env.local
CAPTCHA_PROVIDER=turnstile
NEXT_PUBLIC_TURNSTILE_SITE_KEY=0x…   # public by design
TURNSTILE_SECRET_KEY=0x…             # server-only

Een eigen domein

Eén aankoop bij elke registrar — Cloudflare Registrar, Porkbun, Namecheap werken allemaal. Niets hiervan kopieert naar env; het domein verschijnt in de Services ID, Resend-DNS, Turnstile-hostnamen en OAuth-return-URL's die u onderweg heeft geconfigureerd.

Twee manieren om het naar de app te wijzen: voor Cloud Run gebruikt u de domeinmapping in de deploymentgids — een paar consoleklikken plus de DNS-records die Google opsomt. Of verplaats DNS naar Cloudflare-nameservers (de registrar wisselt twee records) — optioneel, maar ook de nette manier om R2-publieke buckets en Turnstile-hostnamen op één plek te beheren.

Wil je verdergaan met de configuratie? Lees Database instellen.

Veelgestelde vragen

14 vragen

Wat is supastack?

supastack is een modulair fundament voor het bouwen van SaaS-producten met AI. Het brengt gemeenschappelijke infrastructuur samen zodat jij je kunt richten op productspecifieke functies.

Ondersteunt het web en mobiel?

Ja. supastack bevat Next.js- en Expo-apps als startpunten voor web- en mobiele ervaringen.

Welke authenticatie is inbegrepen?

Better Auth dekt e-mail/wachtwoord, OTP en sociale login. Persoonlijke workspaces worden bij het account geprovisioneerd zodat productrecords vanaf dag één afgebakend blijven.

Hoe ondersteunt het AI?

supastack bevat configureerbare multi-provider AI, usage-tracking, budgetten en versleutelde bring-your-own-key-ondersteuning.

Hoe worden abonnementen afgehandeld?

Voor producten op de kit vormen Stripe-billing, abonnementen en entitlements het fundament voor betaalde toegang. Providersecrets blijven server-only.

Waar leeft mijn productspecifieke code?

Productspecifieke functies blijven in een aparte codebase terwijl het product de fundamentmodules van supastack configureert en integreert.

Hoe werkt de prijs van supastack?

De kit is een eenmalige aankoop met lifetime updates: One Framework voor $249 (tijdelijke lanceringsprijs — $100 korting op de normale prijs van $349) of All Frameworks (Next.js, iOS, Android) voor $499 (tijdelijke lanceringsprijs — $100 korting op de normale prijs van $599), plus $75 per extra developer seat. Geen kit-abonnement. Checkout op deze site levert je licentiesleutel per e-mail, met repositorytoegang via een GitHub-uitnodiging.

Hoe bakens workspaces mijn data af?

Records van gebruikers worden afgebakend per workspaceId. Identiteit, entitlements, AI-gebruik, billing-events en auditentries blijven binnen de grens van de persoonlijke workspace.

Hoe werken achtergrondjobs?

Trigger.dev is de expliciete jobruntime. Het JobRunner-contract belooft alleen enqueue, status en cancel — workflowsemantiek blijft Trigger.dev-specifiek en expliciet.

Hoe verschilt e-mail van outreach?

Transactionele e-mail dekt productworkflows zoals voltooiingsnotices. Koude outreach en campagnes zijn productzaken buiten de e-mailmodule van deze kit.

Hoe werken mobiele aankopen?

Mobiel bevat native aankopen en herstel via RevenueCat, met toegang die je server verifieert. Configureer de winkelaccounts en rond apparaattests af vóór publicatie. Webfacturatie blijft afzonderlijk.

Waar leven de AI-providerkeys?

Bring-your-own-key-credentials zijn versleuteld en blijven server-only. Keys worden uit logs gefilterd; gebruik en budgetten blijven zichtbaar op workspaceniveau.

Welke betaalmethoden accepteert de checkout?

De door Stripe gehoste checkout accepteert kaarten en kan ook Alipay en WeChat Pay aanbieden zodra die wallets op het Stripe-account zijn geactiveerd — handig voor kopers in China. Wallet-autorisaties worden asynchroon bevestigd, dus de licentiepagina wordt bijgewerkt zodra de betaling is afgerond.

Kan ik een terugbetaling krijgen?

Zodra je toegang hebt gekregen tot de repository, is supastack voor altijd van jou en kan er dus geen terugbetaling plaatsvinden. Maar wees gerust: je krijgt de volledige broncode met levenslange updates om onbeperkt producten voor jezelf of je klanten te bouwen en te lanceren. Je mag de code alleen niet doorverkopen of de repository herdistribueren als starterkit of template.

NL
Thema