Phase 3: Implement bookmarks + application tracker (/my-list)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 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
- 平均マージ
- 12時間 16分
- マージ済み PR(30日)
- 14
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Your-Voldemort/StudentStack のほかの issue
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
Your-Voldemort/StudentStack#42 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
Your-Voldemort/StudentStack#41 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
Your-Voldemort/StudentStack#40 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 45/100
Your-Voldemort/StudentStack#38 ·
メンテナーはふだん 1 日以内に返信
-
enhancement
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
Your-Voldemort/StudentStack#37 ·
メンテナーはふだん 1 日以内に返信
Your-Voldemort/StudentStack の issue をすべて見る
似ている issue
-
check:passed streams:add
難易度 1/5 1時間未満 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
OpenSlides/OpenSlides#7180 ·
-
area:claude-code-web area:docs bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
anthropics/claude-code#100184 ·
メンテナーはふだん 1 日以内に返信
-
Thumbnail generation from video buffers frames at source resolution: 2–3 GB per upload for 4K+ HEVCオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
Chocobozzz/PeerTube#7817 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
open-telemetry/opentelemetry-js-contrib#3808 ·
メンテナーはふだん 2 日以内に返信