Add React/TypeScript instructor dashboard alongside existing KnockoutJS frontend#100
Draft
Copilot wants to merge 1 commit into
Draft
Add React/TypeScript instructor dashboard alongside existing KnockoutJS frontend#100Copilot wants to merge 1 commit into
Copilot wants to merge 1 commit into
Conversation
Copilot
AI
changed the title
Add React TypeScript instructor dashboard frontend
Add React/TypeScript instructor dashboard alongside existing KnockoutJS frontend
Jun 24, 2026
Copilot created this pull request from a session on behalf of
acbart
June 24, 2026 17:08
View session
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a standalone React + TypeScript frontend (Vite) that coexists with the existing KnockoutJS frontend, plus an instructor dashboard page visualizing submission metrics from the
submission_counts,course_counts,assignment_counts, anduser_countstables.New:
frontend-react/src/types/models.ts— TypeScript types mirroring all backend models:Submission,Course,Assignment,CourseCounts,UserCounts, and allSubmissionMetricsenum valuessrc/api/client.ts— typed fetch wrappers for every backend route group (/api/*,/courses/*,/assignments/*,/grading/*,/blockpy/*); readswindow.$URL_ROOTinjected by Flasksrc/api/dashboardUtils.ts— aggregates rawfake_dashboardrows into per-assignment and per-student summaries (error rates, assertion success rate, avg edit/intervention time)src/hooks/useFetch.ts—useCourses/useCourseMetricshooks with loading/error/refetch statesrc/pages/InstructorDashboard.tsx— dashboard with course selector, stat cards, tabbed charts (Recharts) and tables, CSV exportsrc/components/dashboard/—StatCard,AssignmentSubmissionsChart,ErrorRateChart,MetricsTable,StudentTableFlask integration
GET /dashboardroute added tobasic.py(@login_required)templates/react/dashboard.html— extends existing layout; injects$URL_ROOT,accessToken,currentUserIdfor the API clientstatic/libs/blockpy_react/with stable (non-hashed) output filenames; directory gitignoredDashboard capabilities
Consumes
/courses/fake_dashboard?mode=json(existing endpoint):SubmissionMetrics?mode=csv