Label: gsoc, tracking Assignee: @Ananya44444
✅ Already Complete
A1 — Notifications System (Weeks 1–2)
Schema
Endpoints
Pages
Infra
A2 — Course Materials (Weeks 2–3)
Schema
Endpoints
Pages
A3 — Certificates (Week 3)
Schema
Endpoints
Pages
A4 — Peer Connections & Messaging (Weeks 4–5)
Schema
Endpoints
Pages
A5 — Study Groups (Week 5)
Schema
Endpoints
Pages
A6 — Forums (Weeks 6–7)
Schema
Endpoints
Pages
A7 — Trackers & Progress Tools (Weeks 7–8)
Schema
Endpoints
Pages
A8 — Gamification (Week 9)
Schema
Endpoints
Pages
A9 — Virtual Classroom Full DO Suite (Weeks 10–11)
Schema
Durable Objects
REST API
Pages
Virtual Lab (pure JS)
A10 — Learning Lab / AI Tutor (Week 12, Stretch)
Schema
wrangler.toml
src/scholar/ai_service.py
src/scholar/spaced_rep.py
Tutor logic
Endpoints
Pages
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 |
❌ |
❌ |
❌ |
❌ |
✅ Already Complete
ClassroomDO— WebSocket room with seats, broadcast, whiteboard syncPresenceDO— join/leave/heartbeat presence channelGET /api/notifications— paginated + decryptedGET /api/notifications/unread-countPOST /api/notifications/:id/readPOST /api/notifications/read-allpublic/classroom_poc.htmlA1 — Notifications System (Weeks 1–2)
Schema
notification_preferencestableEndpoints
GET /api/notification-preferencesPATCH /api/notification-preferences_create_notification()wired into: register, enroll, session creationPages
public/notifications.htmlpublic/notification-preferences.htmlInfra
wrangler.toml(coordinate with Ghanshyam — shared bucket)A2 — Course Materials (Weeks 2–3)
Schema
course_materialstableEndpoints
GET /api/activities/:id/materialsPOST /api/activities/:id/materials(R2 upload)DELETE /api/activities/:id/materials/:midGET /api/activities/:id/materials/:mid/download(signed R2 URL)Pages
public/course-materials.htmlA3 — Certificates (Week 3)
Schema
certificatestableEndpoints
POST /api/certificates/generate/:enrollment_idGET /api/certificates/:uuid(public, no auth)Pages
public/certificate.htmlA4 — Peer Connections & Messaging (Weeks 4–5)
Schema
peer_connectionstablepeer_messagestable (AES-256-GCM encrypted content)secure_messagestableEndpoints
GET /api/peersPOST /api/peers/connect/:user_idPATCH /api/peers/:connection_id/:actionGET /api/peers/messages/:user_idPOST /api/peers/messages/:user_idGET /api/secure/inboxPOST /api/secure/sendGET /api/secure/download/:idPOST /api/secure/toggle-star/:idPages
public/peers.htmlpublic/peer-messages.htmlpublic/secure-inbox.htmlA5 — Study Groups (Week 5)
Schema
study_groupstablestudy_group_memberstablestudy_group_invitestableEndpoints
GET /api/study-groupsPOST /api/study-groupsGET /api/study-groups/:idPOST /api/study-groups/:id/inviteGET /api/activities/:id/groupsGET /api/invitationsPOST /api/invitations/:id/respondPages
public/study-groups.htmlpublic/study-group-detail.htmlpublic/invitations.htmlA6 — Forums (Weeks 6–7)
Schema
forum_categoriestableforum_topicstableforum_repliestableforum_votestableEndpoints
GET /api/forum/categories,POST /api/forum/categoriesGET /api/forum/categories/:slugGET /api/forum/topics/:idPOST /api/forum/categories/:slug/topicsPATCH /api/forum/topics/:idPOST /api/forum/topics/:id/repliesPATCH /api/forum/replies/:idPOST /api/forum/topics/:id/votePOST /api/forum/replies/:id/voteGET /api/forum/my-topics,GET /api/forum/my-repliesPOST /api/forum/sync-milestonesPages
public/forum-categories.htmlpublic/forum-category.htmlpublic/forum-topic.htmlA7 — Trackers & Progress Tools (Weeks 7–8)
Schema
progress_trackerstabletracker_logstablegradeable_linkstablelink_gradestablewaiting_roomstablewaiting_room_memberstableEndpoints
GET/POST /api/trackersGET/PATCH /api/trackers/:idPOST /api/trackers/:id/progressGET /api/trackers/embed/:code(public, no auth)GET/POST /api/grade-linksGET /api/grade-links/:idPOST /api/grade-links/:id/gradeGET/POST /api/waiting-roomsGET /api/waiting-rooms/:idPOST /api/waiting-rooms/:id/join,/leaveDELETE /api/waiting-rooms/:idPOST /api/waiting-rooms/:id/create-coursePages
public/trackers.htmlpublic/tracker-detail.html(Chart.js)public/tracker-embed.htmlpublic/grade-links.htmlpublic/grade-link-detail.htmlpublic/waiting-rooms.htmlpublic/waiting-room-detail.htmlA8 — Gamification (Week 9)
Schema
pointstableachievementstablebadges+user_badgestableslearning_streakstablechallenges+challenge_submissionstablespeer_challenges+peer_challenge_invitationstablesEndpoints
GET /api/leaderboardsPOST /api/achievements/awardPOST /api/badges/awardGET /api/streakGET /api/challenges/current,GET /api/challenges/:idPOST /api/challenges/:id/submitPOST /api/peer-challenges,GET /api/peer-challenges,GET /api/peer-challenges/:idPages
public/leaderboards.htmlpublic/streak-detail.html(calendar heatmap)A9 — Virtual Classroom Full DO Suite (Weeks 10–11)
Schema
classroomtableclassroom_participanttablechat_messagetablerecordingtablebreakout_grouptableDurable Objects
WhiteboardDO— delta broadcast, R2 snapshot (30s), reconnect restore, Hibernation APIChatDO— message buffer, broadcast, AES-256-GCM D1 persistenceBreakoutDO— group membership, child ClassroomDO, merge-backwrangler.tomlbindings + migration tagworker.pyREST API
GET/POST /api/classroomsGET /api/classrooms/:idGET /api/classrooms/:id/recordingsGET /api/classrooms/:id/recordings/:ridPages
public/classroom.html(main room — all 5 DOs)public/classroom-lobby.htmlpublic/classroom-breakout.htmlpublic/classroom-recording.htmlpublic/classroom-schedule.htmlVirtual Lab (pure JS)
public/js/virtual-lab/public/virtual-lab/index.htmlpublic/virtual-lab/code-editor/index.html(Pyodide WASM)A10 — Learning Lab / AI Tutor (Week 12, Stretch)
Schema
concept_nodetablelearner_edgetablewrangler.tomlsrc/scholar/ai_service.pyembed_and_store()— Workers AI + Vectorize upsertretrieve()— Vectorize semantic searchstream_response()— Anthropic API with RAG contextsrc/scholar/spaced_rep.pysm2_update()— SM-2 algorithmTutor logic
Endpoints
POST /api/tutor/chatGET /api/tutor/conceptsGET /api/tutor/duePOST /api/tutor/reviewPages
public/learning-lab.htmlpublic/progress-visualization.htmlProgress Summary