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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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