Naar inhoud gaan
supastack
Blader door de docs

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/setup-oauth.md (or send Accept: text/markdown).

OAuth-inloggen instellen

Google, Apple, GitHub, Microsoft en Twitter — één flag plus een clientpaar per stuk.

Maak en verifieer een echt account

Authenticatie betekent bewijzen wie de app gebruikt. Start Postgres en voer eerst de migraties uit met behulp van de databasehandleiding, en laat vervolgens de webserver draaien. Open http://localhost:3000/auth,, kies aanmelden voor e-mailadres/wachtwoord, voer uw naam, e-mailadres en wachtwoord in en verzend. Bewaar EMAIL_PROVIDER=local voor deze eerste test.

Wanneer een stroom om een e-mailcode vraagt, opent u http://localhost:3000/mail-preview in een ander browsertabblad, zoekt u het meest recente bericht voor dat adres en kopieert u de code terug naar het aanmeldingsformulier. Vraag een nieuwe code aan als deze verloopt. Deze berichten blijven in de lokale outbox; herhaaldelijk controleren van een externe inbox zal ze niet vinden. Meld u af en meld u opnieuw aan om te bevestigen dat het door de database ondersteunde account werkt.

Als bij de aanmelding een databaseverbinding of een fout in een ontbrekende tabel wordt gemeld, voltooi dan het instellen van de database in plaats van sociaal inloggen in te schakelen. Google-, GitHub-, Apple-, X- en Microsoft-knoppen hebben hun eigen providerapplicatie en terugbelinstellingen nodig; schakel er pas een in nadat de providerhandleiding compleet is. Better Auth is de meegeleverde standaardengine en heeft geen betaald authenticatieaccount nodig voor lokale e-mailaanmelding.

Kies ingeschakelde inlogmethoden

Het fundament bevat e-mail/wachtwoord, OTP en configureerbare sociale authenticatie. Better Auth bezit identiteit en sessies, terwijl de applicatie providerconfiguratie en transactionele OTP-aflevering componeert.

Schakel alleen de sociale providers in die je hebt geconfigureerd. Provider-clientsecrets en het authenticatiesecret blijven op de server.

Verbind identiteit aan een workspace

Geauthenticeerde handlers resolveeren sessiestate voordat ze workspacerecords benaderen. Workspace-provisioning moet idempotent blijven zodat het herhalen van een lifecyclehook geen dubbele eigenaarschapsrecords creëert.

Verifieer sessiegedrag

Test inloggen, ongeldige of verlopen OTP's, single-use-consumptie, uitloggen en afgewezen anonieme toegang. Memory-adaptertests dekken handlersemantiek; productiedatabasepersistentie en echte providercallbacks hebben aparte acceptatie nodig.

Setup en configuratie

1. Zet AUTH_SECRET op minstens 32 willekeurige tekens — openssl rand -hex 32 werkt.

2. Maak in de developerconsole van elke provider een OAuth-app aan en registreer de callback-URL: {APP_URL}/api/auth/callback/<provider> onder Better Auth (de default-AUTH_PROVIDER). Gebruik aparte apps voor lokaal en productie waar de provider maar één callback toestaat — docs/github-auth-setup.md doorloopt de GitHub-flow end-to-end.

3. Zet de flag van de provider aan en vul zijn clientpaar in — AUTH_GOOGLE_ENABLED plus GOOGLE_CLIENT_ID en GOOGLE_CLIENT_SECRET, en het bijpassende drietal voor Apple, GitHub, Microsoft of Twitter. Een flag aanzetten zonder credentials laat de startup falen en noemt de ontbrekende variabele.

4. Microsoft is de enige callback die per engine verschilt: /api/auth/callback/microsoft onder Better Auth, /api/auth/callback/microsoft-entra-id onder Auth.js.

AUTH_SECRET=<at-least-32-random-characters>
AUTH_PASSKEY_ENABLED=true
EARLY_ACCESS_INVITE_ONLY=false

AUTH_GOOGLE_ENABLED=true
GOOGLE_CLIENT_ID=…
GOOGLE_CLIENT_SECRET=…

AUTH_GITHUB_ENABLED=true
GITHUB_CLIENT_ID=…
GITHUB_CLIENT_SECRET=…

# AUTH_APPLE_ENABLED / AUTH_MICROSOFT_ENABLED / AUTH_TWITTER_ENABLED
# follow the same pattern:
# MICROSOFT_CLIENT_ID=…  MICROSOFT_CLIENT_SECRET=…
# TWITTER_CLIENT_ID=…    TWITTER_CLIENT_SECRET=…

# Workspace connected accounts (Settings → Connections):
# CONNECTED_X_CLIENT_ID=          CONNECTED_X_CLIENT_SECRET=
# CONNECTED_GOOGLE_CLIENT_ID=     CONNECTED_GOOGLE_CLIENT_SECRET=
# CONNECTED_MICROSOFT_CLIENT_ID=  CONNECTED_MICROSOFT_CLIENT_SECRET=

# Callbacks to register (Better Auth):
#   {APP_URL}/api/auth/callback/google
#   {APP_URL}/api/auth/callback/apple
#   {APP_URL}/api/auth/callback/github
#   {APP_URL}/api/auth/callback/twitter
#   {APP_URL}/api/auth/callback/microsoft   (Auth.js: microsoft-entra-id)

Implementatieworkflow

Workspace-externe accounts zijn een ander oppervlak: de CONNECTED_X_*-, CONNECTED_GOOGLE_*- en CONNECTED_MICROSOFT_*-paren voeden Settings → Connections, en hun callbacks leven onder {APP_URL}/api/accounts/{x|google|microsoft}/callback. Een lege client-id laat de connect-flow van die provider uitgeschakeld — hergebruik daar geen inlog-app-credentials.

Provider-clientsecrets blijven server-only, net als AUTH_SECRET — nooit in NEXT_PUBLIC_- of EXPO_PUBLIC_-variabelen.

Inloggen werkt? Ga verder naar AI instellen.

Verificatie en probleemoplossing

Test eerste login, een terugkerende sessie, een geannuleerd consentscherm en een uitgeschakelde provider. Een callback-mismatch is de gebruikelijke failure — de geregistreerde URL moet exact overeenkomen met APP_URL en de callback-id van de engine, en de app heeft een herstart nodig na env-wijzigingen.

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