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
  • POST /api/reset-password
  • POST /api/change-password

Pages

  • public/forgot-password.html
  • public/reset-password.html
  • public/change-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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions