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

    Fields

    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