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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions