Summary
Build a Creator Studio from scratch that lets qualified community members author courses (lessons + milestones), submit them for review, and — once approved by an admin/DAO — publish them to the catalog. Today courses are static content authored in-repo; this makes course creation a first-class in-app flow.
Background
Course content currently lives in src/data/lessons.ts and server content files. To scale the catalog, trusted creators should be able to propose courses without a code deploy. Reputation-gate authoring behind an LRN threshold.
What to build
1. Database migration
CREATE TABLE IF NOT EXISTS course_drafts (
id SERIAL PRIMARY KEY,
author_addr TEXT NOT NULL,
title TEXT NOT NULL,
description TEXT,
difficulty TEXT,
status TEXT NOT NULL DEFAULT 'draft', -- draft|in_review|approved|rejected|published
content JSONB NOT NULL DEFAULT '{}', -- lessons + milestones tree
review_notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
2. Backend
POST /api/studio/drafts create draft (auth + LRN threshold check).
PUT /api/studio/drafts/:id autosave content.
POST /api/studio/drafts/:id/submit → in_review.
POST /api/admin/studio/drafts/:id/review (admin) → approve/reject with notes.
- On approve+publish: materialize the draft into the real
courses/milestones tables.
3. Frontend
/studio dashboard listing the author's drafts and statuses.
- A course builder: add lessons (markdown editor, reuse
LessonContent rendering) and define milestones per lesson.
- Submit-for-review action; show reviewer notes on rejection.
- Admin review screen (reuse
AdminModeration patterns).
4. Tests
- LRN-gate on create, draft autosave, review transitions, publish materialization.
Acceptance criteria
Summary
Build a Creator Studio from scratch that lets qualified community members author courses (lessons + milestones), submit them for review, and — once approved by an admin/DAO — publish them to the catalog. Today courses are static content authored in-repo; this makes course creation a first-class in-app flow.
Background
Course content currently lives in
src/data/lessons.tsand server content files. To scale the catalog, trusted creators should be able to propose courses without a code deploy. Reputation-gate authoring behind an LRN threshold.What to build
1. Database migration
2. Backend
POST /api/studio/draftscreate draft (auth + LRN threshold check).PUT /api/studio/drafts/:idautosave content.POST /api/studio/drafts/:id/submit→in_review.POST /api/admin/studio/drafts/:id/review(admin) → approve/reject with notes.courses/milestonestables.3. Frontend
/studiodashboard listing the author's drafts and statuses.LessonContentrendering) and define milestones per lesson.AdminModerationpatterns).4. Tests
Acceptance criteria