> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Omgeving en configuratie

Eén gevalideerd schema voor de hele workspace.

## Breng één configuratiewijziging aan en controleer deze

Begin met een actieve web-app. Open in de editor apps/web/.env.local; als het niet bestaat, kopieer dan .env.example daarheen met behulp van de webtutorial. Voor een ongevaarlijke eerste controle zoekt u EMAIL_PROVIDER=local op en laat u deze lokaal staan. Deze instelling stuurt product-e-mail naar de lokale preview in plaats van naar een echte inbox. Plak geen KEY=value-regels in de terminal.

Voor elke service die u inschakelt, volgt u de installatiehandleiding van die provider, vervangt u alleen de genoemde waarden, slaat u het bestand op, stopt u de webserver met Ctrl + C en start u opnieuw op met de onderstaande opdracht. Als bij de validatie een ontbrekende sleutel wordt genoemd, heropent u dit bestand en vergelijkt u die sleutel met de handleiding van de provider. Houd root .env alleen gesynchroniseerd voor waarden die worden gebruikt bij databasemigraties; als u het alleen kopieert, wordt Next.js niet geconfigureerd.

[Een configuratiesleutel opzoeken](https://supastack.dev/nl/docs/web/project-structure.md)

[Leer hoe u een opdracht uitvoert en een bestand bewerkt](https://supastack.dev/nl/docs/web/terminal-basics.md)

```
corepack pnpm --filter @supastack/web dev
```


## Begin met het environment-voorbeeld

De root-.env.example is de configuratie-inventaris. Gedeelde validatie leeft in packages/config. Review de gekozen applicatie-omgeving en providermodi samen; een lokale interface is geen productie-credentialstrategie.

De credentialvrije referentiemodus vereist lokale/test-applicatieconfiguratie en fake/lokale providers. Een productieprovider kiezen verandert de runtimevereisten.


## Houd secrets achter de API

Authenticatiesecrets, databasecredentials, providerkeys, Stripe-secrets en Trigger-credentials zijn server-only. Prefix ze nooit met NEXT_PUBLIC_ of EXPO_PUBLIC_. Print ze niet tijdens setup en neem ze niet op in errorresponses.

De browser ontvangt publieke configuratie en toegestane modelaliasen. Workspace-eigenaarschap, entitlementbeslissingen, budgetten en providerselectie blijven server-afgedwongen.


## Check een wijziging vóór gebruik

Valideer configuratie via het bestaande config-package en draai de relevante deterministische tests. Gebruik het apart opt-in provider-smokepad wanneer je klaar bent om echte integraties te verifiëren.

```
corepack pnpm test
corepack pnpm check
corepack pnpm build
```


## Setup en configuratie

packages/config is de enige plek die process.env parseert: een zod-schema produceert een getypeerde ServerConfig en PublicConfig, en provider-selectie wordt uitgedrukt als kinds — providers.ai, providers.billing, providers.email, providers.jobs, providers.storage resolven elk naar een benoemde adapter plus zijn vereiste velden.

Een provider inschakelen maakt zijn credentials verplicht: een sociale login, het s3-storage-kind of het resend-email-kind aanzetten laat de startup falen met de naam van de ontbrekende variabele, in plaats van een runtime-verrassing later.

```
STORAGE_PROVIDER=s3
STORAGE_BUCKET=kit
STORAGE_ENDPOINT=https://s3.example
STORAGE_PUBLIC_BASE_URL=https://cdn.example
# → config rejects the env if a required field is missing
```


## Implementatieworkflow

Lees config via parseServerConfig aan de servergrens en geef de getypeerde waarde naar binnen door — raak process.env niet aan binnen feature-code. De publieke config is een apart, bewust klein object dat veilig naar de client geserialiseerd kan worden.

Product-specifieke env hoort in het eigen schema van het consumerende product. Weersta de verleiding het kit-schema uit te laten groeien voor de behoeften van één product.


## Verificatie en probleemoplossing

Draai de config-packagetests na een schemawijziging, en check dat een ontbrekende vereiste variabele zichzelf benoemt in de fout. Een env die lokaal parseert maar niet in productie betekent meestal een ongedocumenteerd vereist veld.


## Volgende

[i18n-module](https://supastack.dev/nl/docs/modules/i18n.md)
