Skip to content

[GSoC] Ananya — Migration Progress Tracker #57

Description

@ghanshyam2005singh

Label: gsoc, tracking Assignee: @Ananya44444


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)

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 — 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

A7 — 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)

A8 — 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)

A9 — 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

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