Skip to content

feat: Creator Studio — community-authored courses with review & publish flow #1029

Description

@Anuoluwapo25

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/submitin_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

  • A qualified creator can build a course draft in-app
  • Drafts move draft → in_review → approved/rejected
  • Approved drafts appear in the public catalog
  • Below-threshold users cannot create drafts

Metadata

Metadata

Assignees

Labels

GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardOfficial Campaign | FWC26Campaign: Official Campaign | FWC26backendAPI/database/infrastructureenhancementNew feature or requestfeatureNew feature implementationfrontendReact/TypeScript UI work

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions