Skip to content

[GSoC] Ananya — Migration Progress Tracker #57

@ghanshyam2005singh

Description

@ghanshyam2005singh

Label: gsoc, tracking Assignee: @Ananya44444


✅ Already Complete

  • ClassroomDO — WebSocket room with seats, broadcast, whiteboard sync
  • PresenceDO — join/leave/heartbeat presence channel
  • GET /api/notifications — paginated + decrypted
  • GET /api/notifications/unread-count
  • POST /api/notifications/:id/read
  • POST /api/notifications/read-all
  • public/classroom_poc.html
  • Core D1 schema (7 tables)

A1 — Notifications System (Weeks 1–2)

Schema

  • notification_preferences table

Endpoints

  • GET /api/notification-preferences
  • PATCH /api/notification-preferences
  • Internal _create_notification() wired into: register, enroll, session creation

Pages

  • public/notifications.html
  • public/notification-preferences.html

Infra

  • R2 bucket binding in wrangler.toml (coordinate with Ghanshyam — shared bucket)
  • KV namespace binding

A2 — Course Materials (Weeks 2–3)

Schema

  • course_materials table

Endpoints

  • GET /api/activities/:id/materials
  • POST /api/activities/:id/materials (R2 upload)
  • DELETE /api/activities/:id/materials/:mid
  • GET /api/activities/:id/materials/:mid/download (signed R2 URL)

Pages

  • public/course-materials.html

A3 — Certificates (Week 3)

Schema

  • certificates table

Endpoints

  • POST /api/certificates/generate/:enrollment_id
  • GET /api/certificates/:uuid (public, no auth)

Pages

  • public/certificate.html

A4 — Peer Connections & Messaging (Weeks 4–5)

Schema

  • peer_connections table
  • peer_messages table (AES-256-GCM encrypted content)
  • secure_messages table

Endpoints

  • GET /api/peers
  • POST /api/peers/connect/:user_id
  • PATCH /api/peers/:connection_id/:action
  • GET /api/peers/messages/:user_id
  • POST /api/peers/messages/:user_id
  • GET /api/secure/inbox
  • POST /api/secure/send
  • GET /api/secure/download/:id
  • POST /api/secure/toggle-star/:id

Pages

  • public/peers.html
  • public/peer-messages.html
  • public/secure-inbox.html

A5 — Study Groups (Week 5)

Schema

  • study_groups table
  • study_group_members table
  • study_group_invites table

Endpoints

  • GET /api/study-groups
  • POST /api/study-groups
  • GET /api/study-groups/:id
  • POST /api/study-groups/:id/invite
  • GET /api/activities/:id/groups
  • GET /api/invitations
  • POST /api/invitations/:id/respond

Pages

  • public/study-groups.html
  • public/study-group-detail.html
  • public/invitations.html

A6 — Forums (Weeks 6–7)

Schema

  • forum_categories table
  • forum_topics table
  • forum_replies table
  • forum_votes table

Endpoints

  • GET /api/forum/categories, POST /api/forum/categories
  • GET /api/forum/categories/:slug
  • GET /api/forum/topics/:id
  • POST /api/forum/categories/:slug/topics
  • PATCH /api/forum/topics/:id
  • POST /api/forum/topics/:id/replies
  • PATCH /api/forum/replies/:id
  • POST /api/forum/topics/:id/vote
  • POST /api/forum/replies/:id/vote
  • GET /api/forum/my-topics, GET /api/forum/my-replies
  • POST /api/forum/sync-milestones

Pages

  • public/forum-categories.html
  • public/forum-category.html
  • public/forum-topic.html

A7 — Trackers & Progress Tools (Weeks 7–8)

Schema

  • progress_trackers table
  • tracker_logs table
  • gradeable_links table
  • link_grades table
  • waiting_rooms table
  • waiting_room_members table

Endpoints

  • GET/POST /api/trackers
  • GET/PATCH /api/trackers/:id
  • POST /api/trackers/:id/progress
  • GET /api/trackers/embed/:code (public, no auth)
  • GET/POST /api/grade-links
  • GET /api/grade-links/:id
  • POST /api/grade-links/:id/grade
  • GET/POST /api/waiting-rooms
  • GET /api/waiting-rooms/:id
  • POST /api/waiting-rooms/:id/join, /leave
  • DELETE /api/waiting-rooms/:id
  • POST /api/waiting-rooms/:id/create-course

Pages

  • public/trackers.html
  • public/tracker-detail.html (Chart.js)
  • public/tracker-embed.html
  • public/grade-links.html
  • public/grade-link-detail.html
  • public/waiting-rooms.html
  • public/waiting-room-detail.html

A8 — Gamification (Week 9)

Schema

  • points table
  • achievements table
  • badges + user_badges tables
  • learning_streaks table
  • challenges + challenge_submissions tables
  • peer_challenges + peer_challenge_invitations tables

Endpoints

  • GET /api/leaderboards
  • POST /api/achievements/award
  • POST /api/badges/award
  • GET /api/streak
  • GET /api/challenges/current, GET /api/challenges/:id
  • POST /api/challenges/:id/submit
  • POST /api/peer-challenges, GET /api/peer-challenges, GET /api/peer-challenges/:id
  • Peer challenge invitation endpoints (accept, decline, take, complete, submit-leaderboard)

Pages

  • public/leaderboards.html
  • public/streak-detail.html (calendar heatmap)

A9 — Virtual Classroom Full DO Suite (Weeks 10–11)

Schema

  • classroom table
  • classroom_participant table
  • chat_message table
  • recording table
  • breakout_group table

Durable Objects

  • WhiteboardDO — delta broadcast, R2 snapshot (30s), reconnect restore, Hibernation API
  • ChatDO — message buffer, broadcast, AES-256-GCM D1 persistence
  • BreakoutDO — group membership, child ClassroomDO, merge-back
  • wrangler.toml bindings + migration tag
  • WebSocket routing updated in worker.py

REST API

  • GET/POST /api/classrooms
  • GET /api/classrooms/:id
  • GET /api/classrooms/:id/recordings
  • GET /api/classrooms/:id/recordings/:rid

Pages

  • public/classroom.html (main room — all 5 DOs)
  • public/classroom-lobby.html
  • public/classroom-breakout.html
  • public/classroom-recording.html
  • public/classroom-schedule.html

Virtual Lab (pure JS)

  • Copy JS files to public/js/virtual-lab/
  • public/virtual-lab/index.html
  • Physics pages: pendulum, projectile, inclined, mass-spring, circuit
  • Chemistry pages: titration, reaction-rate, solubility, ph-indicator, precipitation
  • public/virtual-lab/code-editor/index.html (Pyodide WASM)

A10 — Learning Lab / AI Tutor (Week 12, Stretch)

Schema

  • concept_node table
  • learner_edge table

wrangler.toml

  • Vectorize binding

src/scholar/ai_service.py

  • embed_and_store() — Workers AI + Vectorize upsert
  • retrieve() — Vectorize semantic search
  • stream_response() — Anthropic API with RAG context

src/scholar/spaced_rep.py

  • sm2_update() — SM-2 algorithm

Tutor logic

  • Concept selection engine
  • Direct Explanation mode (mastery < 0.4)
  • Socratic mode (mastery 0.4–0.7)
  • Practice / Quiz mode (mastery > 0.7)
  • Prerequisite mapper

Endpoints

  • POST /api/tutor/chat
  • GET /api/tutor/concepts
  • GET /api/tutor/due
  • POST /api/tutor/review

Pages

  • public/learning-lab.html
  • public/progress-visualization.html

Progress Summary

Feature Schema API Pages Done
Already complete
A1 Notifications (extended)
A2 Course Materials
A3 Certificates
A4 Peer Connections & Messaging
A5 Study Groups
A6 Forums
A7 Trackers & Progress Tools
A8 Gamification
A9 Virtual Classroom (full)
A10 Learning Lab

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