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
- 平均合并
- 1 天 45 分钟
- 30 天内合并 PR
- 52
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 68/100
vekexasia/pi-extensible-workflows#374 ·
维护者通常 2 天内回复
-
documentation good first issue
难度 2/5 1-3 小时 新手友好度 77/100
维护者通常 1 天内回复
-
help wanted linux
难度 2/5 1-3 小时 新手友好度 75/100
GiuseppeBellamacina/downtime#19 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 82/100
scaleway/ultraviolet#7089 ·
维护者通常 2 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 76/100
Get-Concord-AI/concord-mcp#296 ·
维护者通常 1 天内回复