Skip to content

[GSoC 2026] Ghanshyam — Migration Progress Tracker #56

Description

@ghanshyam2005singh

Label: gsoc, tracking Assignee: @ghanshyam2005singh


G1 — Authentication & Security (Weeks 1–2)

Schema / Infra

  • AES-256-GCM replaces XOR in utils.py
  • One-time D1 re-encryption script
  • httpOnly cookie auth — Set-Cookie in login, read from Cookie header
  • Remove all localStorage token usage from existing JS
  • send_email() helper (Resend HTTP API)

Endpoints

  • POST /api/forgot-password
  • POST /api/register + public/signup.html
  • POST /api/login + public/login.html
  • GET/POST /api/activities + public/teach.html + public/activity.html
  • GET /api/dashboard + public/dashboard.html

Pages

  • public/forgot-password.html
  • public/partials/navbar.html (shared — responsive, auth-aware)
  • public/partials/footer.html (shared)
  • public/login.html — update to cookie flow
  • public/signup.html — polish, error states
  • public/index.html
  • public/profile.html

G2 — User Profile & Public Directory (Weeks 2–3)

Schema

  • Extend users table: bio, avatar_url, is_teacher, social handles, referral_code, stripe_account_id, is_profile_public
  • avatars table

Endpoints

  • GET /api/profile
  • PATCH /api/profile
  • POST /api/profile/avatar (R2 upload)
  • DELETE /api/account
  • GET /api/users/:username
  • GET /api/users

Pages

  • public/profile.html — extended (bio, social, avatar, referral, public toggle)
  • public/avatar-customize.html
  • public/public-profile.html
  • public/users.html

G3 — Survey System (Weeks 3–4)

Schema

  • survey_system_sql table

Tests

  • survey endpoints test

Endpoints

  • GET /api/surveys
  • POST /api/surveys
  • GET /api/surveys/:id
  • POST /api/surveys/:id/responses
  • GET /api/surveys/:id/results
  • GET /api/surveys/:id/export
  • DELETE /api/surveys/:id

Pages

  • public/survey-create.html
  • public/survey-results
  • public/survey.html
  • public/surveys.html

G4 — Platform Pages & Graphing Calculator (Weeks 4–5)

Endpoints

  • api/feedback
  • mailgun endpoint
  • slack endpoint

Pages

  • public/about.html
  • public/terms.html
  • public/feedback.html
  • public/graphing-calculator.html

G5 — Donation & Strip Integration (Weeks 5–6)

Completed

  • donations table
  • Stripe PaymentIntent integration
  • Stripe subscription integration
  • Stripe webhook handling
  • Donation analytics
  • Donation statistics
  • Recent donations feed
  • Mailgun thank-you emails

Pages

  • public/donate.html

G6 — Courses / Activities System (Weeks 6–7)

Schema

  • Extend activities: price, max_students, slug, image_url, invite_only, is_active
  • subjects table

Endpoints

  • PATCH /api/activities/:id
  • DELETE /api/activities/:id
  • POST /api/activities/:id/toggle-status
  • GET /api/activities/:id/analytics
  • GET /api/activities/:id/marketing
  • POST /api/activities/:id/message-students
  • POST /api/activities/:id/add-student
  • POST /api/activities/:id/invite
  • GET /api/activities/search
  • GET /api/subjects

Pages

  • public/learn.html (browse + filter)
  • public/course-search.html
  • public/course-create.html (extended)
  • public/course-edit.html
  • public/course-analytics.html
  • public/course-marketing.html
  • public/subjects.html

G7 — Quiz Engine (Weeks 7–8)

Schema

  • quizzes, quiz_questions, quiz_options, user_quizzes tables

Endpoints

  • GET/POST /api/quizzes, GET/PATCH/DELETE /api/quizzes/:id
  • POST /api/quizzes/:id/questions, PATCH/DELETE /api/quizzes/questions/:id
  • POST /api/quizzes/:id/take
  • PATCH /api/quizzes/attempts/:id (submit + score)
  • GET /api/quizzes/attempts/:id/results
  • POST /api/quizzes/attempts/:id/grade/:question_id
  • GET /api/quizzes/:id/analytics
  • GET /api/quizzes/shared/:code

Pages

  • public/quiz-list.html
  • public/quiz-create.html
  • public/quiz-take.html
  • public/quiz-results.html
  • public/quiz-analytics.html
  • public/peer-challenges.html
  • public/peer-challenge-detail.html

G8 — Cron Jobs & Automation (Week 9)

wrangler.toml

  • Add [triggers] crons = [...]

Cron handlers

  • send_session_reminders (daily)
  • send_assignment_reminders (daily)
  • send_weekly_updates (weekly)
  • send_verification_reminders (daily)
  • cleanup_abandoned_drafts (weekly)
  • roll_forward_sessions (daily)
  • run_daily — streaks + leaderboard snapshot
  • populate_challenges (weekly, Monday)

Misc APIs + pages

  • POST /api/feedback + public/feedback.html
  • GET /api/status
  • GET /api/contributors (KV cached) + public/contributors.html
  • public/about.html, public/terms.html, public/404.html, public/sitemap.html, public/gsoc.html

G9 — ScholarAI (Weeks 10–12, Stretch)

Repo: alphaonelabs/scholar

  • Scaffold repo with wrangler.toml, schema.sql, src/worker.py
  • R2 bucket + Vectorize index binding
  • scholar_documents, scholar_sessions, scholar_messages D1 tables

Endpoints

  • POST /scholar/upload — PDF upload + chunk + embed + Vectorize upsert
  • GET /scholar/documents, DELETE /scholar/documents/:id
  • POST /scholar/chat — RAG Q&A via Anthropic API
  • GET/POST /scholar/sessions
  • GET /scholar/sessions/:id/messages
  • POST /scholar/share/:session_id
  • GET /scholar/shared/:token

Pages (in learn repo)

  • public/scholar.html
  • public/scholar-shared.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions