Feature (Phase 3): Accountless localStorage eligibility profile ('Only what I'm eligible for' toggle) + auth sync & per-user ICS
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- nextjs, react, supabase, typescript
调研方向
Start with src/lib/directory-filters.ts and its test src/lib/directory-filters.test.ts: add the eligibility check inside applyFilters() and let the existing unit tests drive it. Then wire the toggle and the new src/components/directory/eligibility-sheet.tsx into src/components/directory/directory-client.tsx, persisting the profile to localStorage. The ICS route src/app/u/[token]/deadlines.ics/route.ts and the Supabase profile sync are separate pieces that can land later. Done means the toggle filters the directory and the new unit tests pass.
由索引模型根据 Issue 内容生成。
描述
Description
Tracked from docs/2026-09-18-improvement-plan.md (§3.4 #1, §4 Phase 3.1 & 3.3). Relates to #34 and #42.
A key insight from the competitive landscape (§3.4 #1) is that students shouldn't have to create an account just to filter the directory down to what they can claim or apply to.
Implementation Plan
- Accountless Eligibility Profile (
localStoragefirst, optional Supabase sync):- Build a skippable "My Eligibility" sheet/drawer accessible from the directory header:
- Country / State (default
IN) - Degree Level (
UG/PG/PhD/HighSchool) - Year of study (
1–5+) - Branch / Field (
CS,ECE,Mechanical,Design, etc.) - Checkboxes:
"I have a .edu / college email","I have the GitHub Student Developer Pack","I have a valid Student ID"
- Country / State (default
- Persist immediately in
localStorageso it works with zero sign-up friction. - When a user signs in (via existing Supabase Auth), sync the profile to
profiles.
- Build a skippable "My Eligibility" sheet/drawer accessible from the directory header:
- "Only what I'm eligible for" toggle in Directory (
src/lib/directory-filters.ts,src/components/directory/directory-client.tsx):- Single toggle switch in the directory filter bar: "Only what I'm eligible for".
- Evaluates client-side inside
applyFilters():- Matches
resource.verificationNeededagainst user's verification methods (.edu, GitHub Pack, Student ID). - Matches
resource.region/regionsagainst user's country. - Matches
resource.eligibility(levels,countries,states,minYear,fields) where populated on the resource (treating unset eligibility fields as open/unrestricted).
- Matches
- Per-user saved deadlines ICS feed (
/u/[token]/deadlines.ics):- For signed-in users with bookmarked/tracked opportunities (#33), generate a personal calendar token so they can subscribe to
/u/<token>/deadlines.icscontaining only their saved/applied items with-P1Dalerts.
- For signed-in users with bookmarked/tracked opportunities (#33), generate a personal calendar token so they can subscribe to
Acceptance Criteria
- Users can configure their eligibility profile without signing in, persisted in
localStorage. - Toggling "Only what I'm eligible for" in
/directoryaccurately filters resources acrossverificationNeeded,region, andeligibilityJSONB rules. - Signed-in users have their local eligibility profile synced and can subscribe to
/u/[token]/deadlines.icsfor their bookmarked deadlines. - Unit tests in
src/lib/directory-filters.test.tsverify client-side eligibility matching.
Files Involved
src/lib/directory-filters.tssrc/lib/directory-filters.test.tssrc/components/directory/directory-client.tsxsrc/components/directory/eligibility-sheet.tsx(new)src/app/u/[token]/deadlines.ics/route.ts(new)
- 主要语言
- TypeScript
- 星标
- 1
- 派生
- 6
- 平均合并
- 23 小时 53 分钟
- 30 天内合并 PR
- 27
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Your-Voldemort/StudentStack 的其他 Issue
-
enhancement
难度 5/5 一周以上 新手友好度 18/100
Your-Voldemort/StudentStack#83 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 12/100
Your-Voldemort/StudentStack#82 ·
维护者通常 1 天内回复
-
enhancement
难度 4/5 一周以上 新手友好度 22/100
Your-Voldemort/StudentStack#79 ·
维护者通常 1 天内回复
-
Feature (Phase 1): Extend resources schema for opportunities (kind, opensAt, recurrence, amount, provider, eligibility)可能已有人在做 @Cipher-Shadow-IR 于 1 天前认领。 未关闭enhancement
难度 4/5 3-5 天 新手友好度 35/100
Your-Voldemort/StudentStack#78 · 1 条评论 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 20/100
Your-Voldemort/StudentStack#42 ·
维护者通常 1 天内回复
查看 Your-Voldemort/StudentStack 的全部 Issue
相似的 Issue
-
enhancement
难度 2/5 1-3 小时 新手友好度 68/100
equinor/prisma-decision-web#919 ·
维护者通常 1 天内回复
-
[DC] OneLogin sync imports a partial user list when an API request fails可能已有人在做 @RaphaelFakhri 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 84/100
bitwarden/directory-connector#1276 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
home-assistant/installer#324 ·
维护者通常 1 天内回复
-
Mondriaan
难度 2/5 1-3 小时 新手友好度 65/100
knaw-huc/textannoviz#733 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复