Phase 3: Implement bookmarks + application tracker (/my-list)
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 55/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- supabase, typescript
调研方向
Start with the bookmarks schema in src/db/schema.ts lines 66-81, the non-functional control in src/components/directory/resource-card.tsx lines 90-92, and the existing auth flow in src/proxy.ts and src/lib/supabase. Then review the planned entry points in src/app/my-list/page.tsx, src/app/my-list/actions.ts, and src/lib/resources.ts. Done means authenticated users can save resources, edit all four statuses from the card and /my-list, and see the specified empty state.
由索引模型根据 Issue 内容生成。
描述
Description
Implement the bookmarks and application tracker feature as specified in PRD §8.7. This is a P1 requirement for Phase 3.
Acceptance Criteria (from PRD §8.7)
- Sign up/in via Supabase Auth (email + Google OAuth) — already implemented in
/submit - "Save" icon on every card → adds to
/my-list - Status pill per saved resource: Interested / Applied / Got it / Rejected — updates from the card itself, no separate page needed
Current State
- Database schema already has
bookmarkstable with status enum ['interested', 'applied', 'got_it', 'rejected'] (src/db/schema.ts lines 66-81) - Supabase Auth plumbing already in place:
src/lib/supabase/{server,client}.ts,src/proxy.ts /submitpage already has Google + email-link sign-in working- ResourceCard has a non-functional bookmark button (line 90-92 in resource-card.tsx)
Implementation Plan
- Bookmark API/Server Actions:
- Create server actions for: add bookmark, update status, remove bookmark
- Location:
src/app/my-list/actions.tsor similar
/my-listpage:- Protected route (requires auth)
- Show user's bookmarks grouped by status
- Allow status changes inline (pill buttons)
- ResourceCard integration:
- Make bookmark button functional
- Show current status if bookmarked
- Allow status change from card (dropdown or pill cycle)
- Auth protection:
- Use existing
src/proxy.tspattern for/my-listroute - Or use Server Component auth check
- Use existing
Files to Create/Modify
src/app/my-list/page.tsx(new) - main tracker pagesrc/app/my-list/actions.ts(new) - Server Actions for bookmark CRUDsrc/components/directory/resource-card.tsx- functional bookmark buttonsrc/proxy.ts- add/my-listto matcher for auth redirectsrc/lib/resources.ts- addgetUserBookmarks(),toggleBookmark(),updateBookmarkStatus()
Database Schema (already exists)
bookmarks: {
userId: uuid (references auth.users)
resourceId: integer (references resources.id)
status: 'interested' | 'applied' | 'got_it' | 'rejected'
createdAt: timestamp
PK: (userId, resourceId)
}
UX Notes
- Status pills on card: clicking cycles through states or opens small popover
/my-listshows all bookmarks with inline status editing- Empty state: "Save resources to track them here"
- Reuse existing UI patterns (shadcn/ui Badge, Select, etc.)
- 主要语言
- TypeScript
- 星标
- 1
- 派生
- 6
- 平均合并
- 11 小时 16 分钟
- 30 天内合并 PR
- 16
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Your-Voldemort/StudentStack 的其他 Issue
-
enhancement
难度 5/5 一周以上 新手友好度 20/100
Your-Voldemort/StudentStack#42 ·
维护者通常 1 天内回复
-
enhancement
难度 4/5 3-5 天 新手友好度 45/100
Your-Voldemort/StudentStack#41 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 25/100
Your-Voldemort/StudentStack#40 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 45/100
Your-Voldemort/StudentStack#38 ·
维护者通常 1 天内回复
-
enhancement
难度 5/5 一周以上 新手友好度 35/100
Your-Voldemort/StudentStack#37 ·
维护者通常 1 天内回复
查看 Your-Voldemort/StudentStack 的全部 Issue
相似的 Issue
-
area: backend bug priority: low
难度 2/5 1-3 小时 新手友好度 78/100
snapotter-hq/SnapOtter#2254 ·
维护者通常 1 天内回复
-
bug ticket
难度 2/5 1-3 小时 新手友好度 72/100
cratestack/cratestack#1154 ·
维护者通常 1 天内回复
-
server 消息处理器 cmd 分支补显式错误回报——竞态非法命令现走未处理拒绝可能已有人在做 @openaddr 今天认领。 未关闭ready-for-agent refactor wayfinder:task
难度 2/5 1-3 小时 新手友好度 72/100
openaddr/dafung-web#428 ·
维护者通常 1 天内回复
-
Flaky: mongodb-memory-server 'Port already in use' when another process starts a mongod concurrently未关闭area:testing bug effort:S priority:P2
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 1 天内回复
-
lens:agent lens:process process
难度 2/5 1-3 小时 新手友好度 82/100
thebristolsound/birdbrain#1772 ·
维护者通常 1 天内回复