Feature (Phase 3): Accountless localStorage eligibility profile ('Only what I'm eligible for' toggle) + auth sync & per-user ICS
Maintainer thường phản hồi trong vòng 1 ngày
Một pull request liên quan đã được merge.
- #106 của @Aryan-Techie — đã merge
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- nextjs, react, supabase, typescript
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
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)
- Ngôn ngữ chính
- TypeScript
- Star
- 1
- Fork
- 6
- Merge trung bình
- 21 giờ 33 phút
- Pull request đã merge (30 ngày)
- 48
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Your-Voldemort/StudentStack
-
CI passes NEXT_PUBLIC_SUPABASE_ANON_KEY but the app reads NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY; e2e job installs only ChromiumCó thể đã có người làm @rootsiemen đã nhận 1 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Your-Voldemort/StudentStack#126 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Flag curated flagship opportunities whose dates need a refreshCó thể đã có người làm @rootsiemen đã nhận 1 ngày trước. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Your-Voldemort/StudentStack#120 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
Your-Voldemort/StudentStack#119 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Your-Voldemort/StudentStack
Issue tương tự
-
bug hacktoberfest help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
libredb/libredb-studio#1941 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
chore other
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
alastair-smith/card-games#308 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
paperclipai/paperclip#17379 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[good first issue, hacktoberfest] 🏯 Hacktoberfest Task - Add new Anime Quote 626 (good-first-issue)Đang mởcommunity first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 76/100
lingdojo/kana-dojo#33040 · 1 bình luận · 5 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug mobile ui
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày