Phase 5: Public read API for resources
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- api, backend, databases, documentation
Línea de trabajo
Start by reading src/lib/resources.ts and src/lib/directory-filters.ts, then inspect the PRD §8.13 requirements. Use src/app/api/resources/route.ts, src/lib/api-validation.ts, and the middleware entry point as the implementation map; resolve the rate-limiting approach and database-level filter behavior. Done means the documented endpoint supports the listed filters, pagination, caching, rate limiting, and response format.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Implement public read API as specified in PRD §8.13. This is a P2 requirement for Phase 5.
Acceptance Criteria (from PRD §8.13)
-
GET /api/resources(paginated, filterable by category/tag) for campus ambassador bots/Discord integrations - Rate-limited, no auth required for reads
Current State
- No public API exists
- All data fetching is done via Server Components
- Resources are fetched via
src/lib/resources.tsfunctions
Implementation Plan
- Create API route:
src/app/api/resources/route.ts - Implement query parameters:
page/limit(pagination)category(filter by category slug)tag(filter by tag)region(IN / Global)costType(free, discount, etc.)status(active only by default)search(optional fuzzy search - may be heavy, consider exact match)
- Add rate limiting:
- Use Vercel Edge Middleware or Upstash Redis
- Limit: 60 requests/minute per IP
- Response format:
{ "data": [...], "pagination": { "page": 1, "limit": 30, "total": 593, "totalPages": 20 }, "filters": { "category": "development-tools", ... } } - Documentation: Add API docs to README or separate docs file
Files to Create
src/app/api/resources/route.ts(new)src/lib/api-validation.ts(new) - Zod schemas for query paramssrc/middleware.tsor Edge Function - rate limiting (or use Upstash)
Rate Limiting Options
- Option A: Upstash Redis (recommended for serverless)
npm install @upstash/ratelimit @upstash/redis- Edge-compatible
- Option B: Vercel Edge Middleware with in-memory (not persistent across invocations)
- Option C: Custom middleware with KV store
Query Implementation
Reuse existing applyFilters logic from src/lib/directory-filters.ts but on the database level (SQL WHERE clauses) for performance.
Caching
- Add
Cache-Control: public, s-maxage=60, stale-while-revalidate=300 - Resources don't change frequently (admin CRUD + weekly cron)
OpenAPI/Swagger
- Consider adding OpenAPI spec for documentation
- Could use
@asteasolutions/zod-to-openapifor auto-generation
- Lenguaje dominante
- TypeScript
- Estrellas
- 1
- Forks
- 6
- Merge medio
- 11 h 16 min
- PR fusionados (30 d)
- 16
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Your-Voldemort/StudentStack
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
Your-Voldemort/StudentStack#42 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
Your-Voldemort/StudentStack#41 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Your-Voldemort/StudentStack#40 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 45/100
Your-Voldemort/StudentStack#38 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Your-Voldemort/StudentStack#37 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Your-Voldemort/StudentStack
Issues similares
-
[Feature]: [P3] engine-rs: the package source hash should ignore line endings and untracked filesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
maniator/verticopolis#880 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
siyuan-note/siyuan#20353 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
black-forest-labs/skills#17 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Albert-Weasker/niubigeo#168 ·
Los mantenedores suelen responder en 1 día