Feature (Phase 1): Add 'kind' filter chip row to Directory and opportunity presets (scholarships, open-source, internships)
维护者通常 1 天内回复
已经有一个关联 PR 被合并了。
- #91 来自 @rootsiemen —— 已合并
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 50/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- typescript
- 领域
- frontend
调研方向
Start in src/lib/directory-filters.ts, where applyFilters and the faceted-count logic live, then check whether Resource already has a kind field, since the issue depends on Phase 1 data. Next, read src/lib/presets.ts and src/components/directory/directory-client.tsx to see how filters and URL params are wired. Done when applyFilters and countByKind handle kind, the chip bar syncs to ?kind=, the three presets resolve, and src/lib/directory-filters.test.ts passes.
由索引模型根据 Issue 内容生成。
描述
Description
Tracked from docs/2026-09-18-improvement-plan.md (§4 Phase 1.6).
Once opportunities (kind: perk | scholarship | fellowship | internship | mentorship | program) are added in Phase 1, the Directory needs a top-level kind chip row above the existing filters so students can switch between All / Perks / Scholarships & Fellowships / Internships / Mentorship / Programs, plus three high-intent SEO preset pages.
Implementation Plan
- Filter logic (
src/lib/directory-filters.ts):- Add
kind: string[]toDirectoryFilters. - Filter by
kindinapplyFilters()(respectingskip === "kind"for faceted counts). - Add
countByKind(resources: Resource[]): Record<string, number>.
- Add
- Directory UI (
src/components/directory/directory-client.tsx):- Render a horizontal chip bar above the filter/search controls:
All,Perks,Scholarships,Internships,Mentorship,Programswith live facet counts. - Sync
kindwith the URL query string (?kind=scholarship) so filtered views are shareable.
- Render a horizontal chip bar above the filter/search controls:
- New SEO Presets (
src/lib/presets.ts):scholarships-for-indian-students: Scholarships and fellowships open to Indian students (kind: ["scholarship", "fellowship"], region/eligibility India).open-source-programs: Paid open-source mentorship programs like GSoC, LFX, Outreachy, MLH, Season of KDE (kind: ["program"]).paid-internships-india: Research and industry internships with stipends open to students in India (kind: ["internship"],costType: ["stipend"]).
Acceptance Criteria
-
applyFiltersandcountByKindfilter and count resources bykind. - Directory page renders the
kindchip bar with live counts and syncs selection to?kind=URL params. -
/scholarships-for-indian-students,/open-source-programs, and/paid-internships-indiaresolve viasrc/app/[preset]/page.tsx. - Unit tests in
src/lib/directory-filters.test.tscoverkindfiltering and facet counts.
Files Involved
src/lib/directory-filters.tssrc/lib/directory-filters.test.tssrc/lib/presets.tssrc/components/directory/directory-client.tsx
- 主要语言
- TypeScript
- 星标
- 1
- 派生
- 6
- 平均合并
- 21 小时 33 分钟
- 30 天内合并 PR
- 48
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Your-Voldemort/StudentStack 的其他 Issue
-
CI passes NEXT_PUBLIC_SUPABASE_ANON_KEY but the app reads NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY; e2e job installs only Chromium可能已有人在做 @rootsiemen 于 2 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 62/100
Your-Voldemort/StudentStack#126 · 1 条评论 ·
维护者通常 1 天内回复
-
Flag curated flagship opportunities whose dates need a refresh可能已有人在做 @rootsiemen 于 2 天前认领。 未关闭
难度 5/5 一周以上 新手友好度 35/100
Your-Voldemort/StudentStack#120 · 2 条评论 ·
维护者通常 1 天内回复
-
Reviews: add "Most helpful" sort with helpful votes可能已有人在做 @Aryan-Techie 于 1 天前认领。 未关闭
难度 5/5 一周以上 新手友好度 35/100
Your-Voldemort/StudentStack#119 · 2 条评论 ·
维护者通常 1 天内回复
查看 Your-Voldemort/StudentStack 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
awesome-dsh-plugin/awesome-dsh-plugin#9184 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100
farion1231/cc-switch#8829 ·
维护者通常 1 天内回复
-
[core-client] Remove unused hand-maintained transport helpers after the definition-table cutover未关闭doc-audit enhancement
难度 2/5 1-3 小时 新手友好度 88/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 85/100