> ## 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

# Frequentiebeperking

Eén limiter voor elke abuse-gevoelige route.

## Walkthrough voor beginners

Vereisten: Lees de twee onderstaande beginnershandleidingen, voltooi de lokale webconfiguratie en open deze monorepo in de root van uw editor. Webinstellingen horen thuis in `apps/web/.env.local`; Next.js leest de root `.env` niet. `/dashboard` in de standaard nepmodus is een demo zonder database; `/auth` heeft een gemigreerde database nodig.

Korte termen: een werkruimte bestaat uit de afzonderlijke gebruikers, gegevens en instellingen van één team. De server is de vertrouwde backend; houd providersleutels uit de browser- en telefooncode. Een migratie is een versiebeheer van de database, waarbij tabellen worden gemaakt of bijgewerkt. Een AI-model is de motor die antwoord geeft; de modelcatalogus is de serverlijst met beschikbare model-ID's en prijzen. Een provider is een externe service, zoals een AI-, e-mail- of factureringsservice. Een recht is een subsidie ​​waarmee een werkruimte een functie kan gebruiken. Een webhook is een bericht dat de ene service naar de URL van een andere service verzendt.

1. Kies in de serveromgeving `RATE_LIMIT_STORE=postgres` voor gedeelde productiebuckets en stel `PUBLIC_AI_DAILY_BUDGET_MICROUNITS=0` zo in dat de openbare AI uitgeschakeld blijft.

2. Stel `TRUSTED_PROXY_COUNT` alleen in op het exacte aantal gecontroleerde proxy's die doorstuurheaders toevoegen; kopieer `1` niet tenzij dat geldt voor uw host.

3. Controleer of een geweigerd verzoek een 'retry-safe'-fout oplevert. Als de limieten per instantie verschillen, controleer dan of ze Postgres delen.

Voor aangepaste code begint u met de meegeleverde `prompts/README.md` en kopieert u de dichtstbijzijnde prompt: `prompts/new-app-screen.md` voor een app-scherm of `prompts/new-landing-page.md` voor een openbare pagina. Voor server-, database- of providerwerk geeft u uw codeeragent de taak van deze handleiding en vraagt ​​u hem om `AGENTS.md`, `.ai/PROJECT_CONTEXT.md` en overeenkomende `.ai/`-mirrors te lezen; inspecteer de exacte bronbestanden die hier worden genoemd; maak een lijst van bestanden en controleer deze voordat u deze bewerkt; behoud van het eigendom van de werkruimte en geheimen voor de server; en laat je het verschil zien. Vertel het gewenste gedrag, invoer- en uitvoervelden, toegestane rollen, verwacht succes en fouten, en het testaccount, de provider of het apparaat. Gebruik voorbeeldwaarden; plak nooit een echt geheim.

[Voordat u begint](https://supastack.dev/nl/docs/web/before-you-start.md)

[Basisbeginselen van de terminal](https://supastack.dev/nl/docs/web/terminal-basics.md)

[Lokale webinstellingen](https://supastack.dev/nl/docs/web/ship-in-5-minutes.md)

[Agentprompts en projectgeheugen](https://supastack.dev/nl/docs/web/agents.md)


## Kies de limiterwinkel

`RATE_LIMIT_STORE` is geheugen of postgres. Indien niet ingesteld, selecteert de productie Postgres en selecteren andere omgevingen geheugen. Gedeelde `rate_limit_bucket`-rijen coördineren meerdere servers; opslagfouten kunnen momenteel niet worden geopend om de beschikbaarheid van API te behouden.

Werkruimte-/gebruikers-AI-inzendingslimieten en de openbare API/MCP-begrenzer beschermen hun afzonderlijke oppervlakken. Behoud de bestaande bellerspecifieke buckettoetsen bij het toevoegen van routes.


## Vertrouw alleen gecontroleerde proxy-hops

`TRUSTED_PROXY_COUNT` varieert van 0-10 en telt omgekeerde proxy's die `x-forwarded-for` toevoegen. Zero vertrouwt niemand en gebruikt een gedeelde onbekende bucket; één gecontroleerde proxy heeft doorgaans 1 nodig. Een onjuiste telling zorgt ervoor dat niet-vertrouwde doorgestuurde waarden de limiter beïnvloeden.


## Beperk de uitgaven van anonieme providers

`PUBLIC_AI_DAILY_BUDGET_MICROUNITS=0` schakelt openbare AI-oproepen uit. Een geconfigureerde niet-negatieve dagelijkse UTC-limiet reserveert platformuitgaven voordat de provider belt en staat los van het budget van elke werkruimte. Test gelijktijdige reserveringen, verleg grenzen en weigering voordat een factureerbare provider probeert.

```
RATE_LIMIT_STORE=postgres
TRUSTED_PROXY_COUNT=1
PUBLIC_AI_DAILY_BUDGET_MICROUNITS=0
```


## Setup en configuratie

rate-limit-runtime levert gedeelde limiters die in de abuse-gevoelige oppervlakken zijn bedraad — apiV1Limiter (600 requests/minuut) en authLimiter (300 requests/minuut) zijn de meegeleverde presets. Limits keyen op identiteit plus routebucket en antwoorden met een hervattende 429 met Retry-After in plaats van een generieke fout.

Breid de bestaande limiter uit naar nieuwe abuse-gevoelige endpoints — sign-in, OTP, checkout, task-submissie, key-aanmaak — in plaats van per-route tellers te verzinnen die uit elkaar lopen.

```
export const apiV1Limiter = createNamedRateLimiter("api-v1", 600, 60_000);
export const authLimiter = createNamedRateLimiter("auth", 300, 60_000);
```


## Implementatieworkflow

Kies de key zorgvuldig: per-user voor geauthenticeerde acties, per-API-key voor publiek verkeer, per-IP alleen als laatste redmiddel voor anonieme endpoints. Legitieme bursts krijgen een Retry-After; aanvallen raken een hard plafond.

Houd de limiter fail-closed op abuse-gevoelige routes — is de store onbereikbaar, verkies dan duur werk te weigeren boven het ongelimiteerd doorlaten.


## Verificatie en probleemoplossing

Oefen een limiter tot hij 429 teruggeeft met een zinnige Retry-After, verifieer dat verschillende workspaces onafhankelijke buckets krijgen en bevestig dat een burst na het venster weer naar succes terugkeert. Log weigeringen zonder de gevoelige payload van het verzoek.


## Volgende

[AI en achtergrondjobs](https://supastack.dev/nl/docs/modules/ai.md)
