From 96f95ed062ac6251f1b688af4f5adbed2e044b10 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 1 Apr 2026 02:48:59 +0200 Subject: [PATCH] UWorld-style quiz sidebar, mobile nav toggle, jobs page with skipped details MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quiz layout: - Desktop: sticky right sidebar (200px) showing all question numbers with answered/current status — like UWorld. Main content fills the rest. - Mobile: sidebar hidden; a "N / Total ▲" toggle button between Prev/Next reveals a collapsible grid of question numbers below the nav buttons - Question dots: circle buttons colored blue=current, green=answered, gray=unanswered - Both sidebar and mobile grid close/update on selection Jobs page (/jobs — moderator): - List of all extraction jobs (from Redis, same session or different browser) - Each job shows: status badge, questions extracted, skipped count - "Details" expands to show: - Skipped questions warning: names + explanation of why (no correct answer found) - Chunk breakdown: per-50-page results - Full extraction log (collapsible
) - Live polling for running jobs - "Open Quiz" button links directly to the quiz Navigation: - Jobs page linked from NavBar jobs badge dropdown - Route: /jobs (moderator required) - App.jsx updated with new route Co-Authored-By: Claude Sonnet 4.6 (1M context) --- frontend/src/App.jsx | 2 + frontend/src/index.css | 49 ++++-- frontend/src/pages/JobsPage.jsx | 159 +++++++++++++++++++ frontend/src/pages/QuizPage.jsx | 263 +++++++++++++++++++------------- 4 files changed, 351 insertions(+), 122 deletions(-) create mode 100644 frontend/src/pages/JobsPage.jsx diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 111a04c..451854c 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -14,6 +14,7 @@ import AdminPage from './pages/AdminPage' import AccountPage from './pages/AccountPage' import SettingsPage from './pages/SettingsPage' import QuestionBankPage from './pages/QuestionBankPage' +import JobsPage from './pages/JobsPage' import QuizEditPage from './pages/QuizEditPage' import VerifyEmailPage from './pages/VerifyEmailPage' import ForgotPasswordPage from './pages/ForgotPasswordPage' @@ -62,6 +63,7 @@ function AppRoutes() { } /> } /> } /> + } />