⚠️ Performance: No Rate Limiting on GitHub API Calls
Severity: High
File: src/app/api/contributors/route.js
Problem
Every request hits GitHub API without rate limiting:
const [pullsRes, commitsRes] = await Promise.all([
fetch("https://api.github.com/repos/.../pulls?...", { cache: "no-store" }),
fetch("https://api.github.com/repos/.../commits?...", { cache: "no-store" })
]);
Issues
- No caching:
cache: no-store means every request hits GitHub
- No rate limiting: Can trigger GitHub API rate limits (60 req/hr for unauth)
- DoS potential: Single user can exhaust API quota
Fix Required
// Add caching
const res = await fetch(url, {
next: { revalidate: 300 } // Cache for 5 minutes
});
// Add rate limiting header check
const rateLimit = res.headers.get("x-ratelimit-remaining");
if (rateLimit && parseInt(rateLimit) < 10) {
return NextResponse.json({ error: "Rate limited" }, { status: 429 });
}
Labels: bug, ssoc26
Severity: High
File: src/app/api/contributors/route.js
Problem
Every request hits GitHub API without rate limiting:
Issues
cache: no-storemeans every request hits GitHubFix Required
Labels: bug, ssoc26