Phase 4: Community submissions + moderation queue
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 初心者へのやさしさ
- 70/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- supabase, typescript
調査の方向性
Start with src/app/submit/actions.ts and src/app/submit/submit-form.tsx, then inspect isUrlListed() in src/lib/resources.ts and the existing /submit submission view. Confirm the action validates the required fields, rejects duplicate URLs, records the signed-in user with approved=false, and refreshes the user's status view. Done means a submission appears under review and remains available to the admin queue.
索引モデルが issue の本文から書いたものです。
説明
Description
Implement community submissions and moderation queue as specified in PRD §8.10. This is a P2 requirement for Phase 4.
Acceptance Criteria (from PRD §8.10)
- Logged-in users can submit a resource (
approved = falseuntil admin review) - Design the
resourcestable'ssubmittedBy/approvedcolumns now (already in schema)
Current State
- Database schema already has
submittedBy(text) andapproved(boolean, default true) columns on resources /submitpage exists with Supabase Auth sign-in/submitpage hasSubmitFormcomponent but it's not fully wired to backend- Admin dashboard already has review queue for
approved = falseresources - Admin can approve/reject submissions
What's Missing
- SubmitForm backend: The form submission action needs to insert into resources with
approved = false - User submission tracking: Show user their submissions with status (already partially in
/submitpage) - Submission validation: Validate URL, required fields, duplicate detection
- Email notification: Notify admin of new submission (optional, Phase 5)
Implementation Plan
- Complete SubmitForm action:
src/app/submit/actions.ts- insert resource withapproved = false,submittedBy = user.id- Validate form data (Zod schema)
- Check for duplicate URL
- Redirect to
/submitwith success message
- Enhance user submission view:
/submitpage already shows user's submissions with status- Ensure real-time updates after submission
- Admin review queue: Already working in
/admindashboard - Duplicate detection: Use existing
isUrlListed()insrc/lib/resources.ts
Files to Modify
src/app/submit/actions.ts- complete the submission Server Actionsrc/app/submit/submit-form.tsx- ensure proper form handlingsrc/lib/resources.ts- verifyisUrlListed()works for duplicate check
Database Schema (already exists)
resources: {
submittedBy: text('submitted_by'), // user id
approved: boolean('approved').notNull().default(true), // false for submissions
// ... other fields
}
UX Notes
- Submission form: name, URL, category, cost type, description (required), tags/region/deadline (optional)
- After submit: "Thanks! Your submission is under review." + show in user's submission list
- Admin sees in review queue with "Approve" / "Reject" / "Edit before approving"
- 主要言語
- TypeScript
- スター
- 1
- フォーク
- 6
- 平均マージ
- 11時間 16分
- マージ済み PR(30日)
- 16
環境構築
- 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
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
farbenmeer/tapi#531 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
naver/egjs-flicking#971 ·
-
Renderer treats a sub-pixel width difference as a resize, which cancels the `motion()` entranceオープン
難易度 1/5 1時間未満 初心者へのやさしさ 85/100
メンテナーはふだん 1 日以内に返信
-
Tenant
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
MTES-MCT/Dossier-Facile-Frontend#2061 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
backnotprop/plannotator#1784 ·
メンテナーはふだん 1 日以内に返信