Follow-up to #121, which added a per-IP rate limit on the server-function endpoints (burst 40, sustained 20/min — constants in src/start.ts).
Why: the numbers are an educated guess (~5 RPC calls per client-side navigation), not measured. And when a legit heavy user does trip the limit, the frontend has no handling for a 429 — TanStack Query will surface it as a generic error state, which reads as "the site is broken" instead of "slow down a moment".
What to do:
Follow-up to #121, which added a per-IP rate limit on the server-function endpoints (burst 40, sustained 20/min — constants in
src/start.ts).Why: the numbers are an educated guess (~5 RPC calls per client-side navigation), not measured. And when a legit heavy user does trip the limit, the frontend has no handling for a 429 — TanStack Query will surface it as a generic error state, which reads as "the site is broken" instead of "slow down a moment".
What to do:
Retry-Afterheader instead of hammering retries