You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Elijah Voigt d9099c5585 feat(quotesdb): add Cloudflare WAF rate limiting rules via OpenTofu
Adds infra/rate-limits.tf with a cloudflare_ruleset (phase: http_ratelimit)
implementing per-IP rate limits on all mutating API endpoints:
- PUT /api/quotes: 5 requests per 10 minutes (quote creation)
- POST /api/quotes/:id/report: 3 requests per hour (abuse reports)
- POST /api/quotes/🆔 10 requests per minute (quote updates)
- DELETE /api/quotes/🆔 10 requests per minute (quote deletes)

The report rule is ordered before the general update rule to ensure the
more-specific /report path matches before the broader /api/quotes/:id
pattern. Documents the approach, plan requirements, and layered protection
rationale in docs/ARCHITECTURE.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3 months ago
..
api feat(quotesdb): implement API DB layer and all HTTP handlers 3 months ago
plans docs(quotesdb): admin features design doc 3 months ago
ui feat(quotesdb): implement API DB layer and all HTTP handlers 3 months ago
ARCHITECTURE.md feat(quotesdb): add Cloudflare WAF rate limiting rules via OpenTofu 3 months ago
LOCAL_DEV.md feat(quotesdb): Cloudflare Turnstile CAPTCHA on submit 3 months ago
PLANNING.md refactor(quotesdb): collapse to single crate with api and ui binaries 3 months ago