Skip to content

[GSoC 2026] Ghanshyam — Migration Progress Tracker #56

@ghanshyam2005singh

Description

@ghanshyam2005singh

Label: gsoc, tracking Assignee: @ghanshyam2005singh


✅ Already Complete

  • 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
  • POST /api/sessions
  • GET /api/tags, POST /api/activity-tags
  • GET /api/admin/table-counts + public/admin.html
  • POST /api/init, POST /api/seed
  • public/index.html
  • public/profile.html (basic)

G1 — Authentication & Security (Weeks 1–2)

Schema / Infra

  • AES-256-GCM replaces XOR in utils.py
  • One-time D1 re-encryption script
  • Token expiry (exp claim) in JWT
  • 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

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

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 — Courses / Activities System (Weeks 3–4)

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

G4 — Sessions & Enrollment System (Weeks 4–5)

Schema

  • Extend sessions: meeting_link, max_students, price, is_rolled_over
  • Extend enrollments: payment_intent_id, payment_status, notes
  • course_progress table

Endpoints

  • GET /api/sessions/:id
  • PATCH /api/sessions/:id
  • DELETE /api/sessions/:id
  • POST /api/sessions/:id/duplicate
  • POST /api/sessions/:id/complete
  • GET /api/sessions/:id/attendance
  • POST /api/sessions/:id/attendance
  • POST /api/sessions/:id/rollover
  • DELETE /api/enrollments/:id
  • PATCH /api/enrollments/:id/progress
  • PATCH /api/enrollments/:id/notes
  • GET /api/enrollments/:id/progress

Pages

  • public/session-edit.html
  • public/student-management.html
  • Update public/activity.html (attendance, duplicate, rollover)

G5 — Blog & Success Stories (Weeks 5–6)

Schema

  • blog_posts, blog_comments, success_stories tables

Endpoints

  • GET /api/blog, POST /api/blog, GET /api/blog/:slug, PATCH /api/blog/:slug, DELETE /api/blog/:slug
  • POST /api/blog/:slug/comments
  • GET /api/success-stories, POST /api/success-stories, GET /api/success-stories/:slug, PATCH /api/success-stories/:slug, DELETE /api/success-stories/:slug

Pages

  • public/blog-list.html
  • public/blog-create.html
  • public/blog-detail.html
  • public/success-stories.html
  • public/success-story-detail.html

G6 — Quiz Engine (Weeks 6–7)

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

G7 — Payments & Store (Weeks 8–9)

Schema

  • payments, cart, cart_items, goods, storefront, orders, order_items, discounts, membership_plans, user_memberships, donations tables

Endpoints

  • POST /api/payments/intent/:activity_id
  • POST /api/payments/cart-intent
  • POST /api/payments/stripe-webhook
  • POST /api/payments/cart/checkout/free
  • GET /api/cart, add/remove items
  • POST /api/stripe/connect/onboarding, webhook
  • POST /api/discounts/apply
  • GET/POST/PATCH/DELETE /api/goods, /api/goods/:id
  • GET /api/storefronts/:slug, POST /api/storefronts
  • GET /api/orders/:id, PATCH /api/orders/items/:id/status
  • Donation endpoints (3)
  • Membership endpoints (5)

Pages

  • public/cart.html
  • public/checkout.html
  • public/donate.html
  • public/membership-checkout.html
  • public/membership-settings.html
  • public/store-list.html
  • public/store-detail.html
  • public/goods-detail.html
  • public/order-detail.html

G8 — Cron Jobs & Automation (Week 10)

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 11–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

Progress Summary

Feature Schema API Pages Status
Already done
G1 Auth & Security
G2 Profile & Directory
G3 Courses
G4 Sessions & Enrollment
G5 Blog & Stories
G6 Quiz Engine
G7 Payments & Store
G8 Cron & Automation
G9 ScholarAI

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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