Website Review: Meridian (Study tracker / learning dashboard)

Loaded SRC_URL

The page under review is: https://producingtechnology.com/65-apps/wangshupeng_184764_15200455_meridian.html (reached as page 134/143 inside TERMINAL_VIEWER).

It's a self-contained single HTML file with embedded CSS/JS; all content appears to come from hard-coded JS objects rather than a remote JSON fetch.

Summary of app behavior

Meridian is a calm, dark-themed study dashboard built around a single user ("William") with a 12-day streak. The header shows the app name in a mixed serif/italic wordmark, a small version tag (v1.0.0), a streak pill, and a circular avatar. Below the greeting ("Good morning, William.") sits a row of four summary tiles: Topics 4, Daily Goal 45 min, Avg Mastery 70%, and Sessions 2.

A four-way tab strip (Dashboard / Topics / Sessions / Settings) swaps the main content area without reloading the page.

Clicking a topic card (on either Dashboard or Topics tab) or a Study now → recommendation opens a modal with the topic's category, mastery bar, subtopic chips, connected-topic chips, and four Study Mode tiles (Deep Dive / Flashcard / Quiz / Quick Review), plus a big START SESSION → button. Selecting a mode highlights it; starting a session briefly shows a bottom-center toast like "▶ Starting flashcard session for Probability & Statistics" and closes the modal. The connected-topic chips are themselves clickable and swap the modal to the connected topic.

Things that didn't work how I expected

Prompt to improve the app

Extend Meridian (wangshupeng_184764_15200455_meridian.html) so that it behaves like a real study tracker, not just a static dashboard. Keep it a single self-contained HTML file with vanilla JS and preserve the current serif/italic wordmark, dark palette, and card-grid layout.

  1. Make "Start Session" do something. After clicking, replace the modal with an in-page session surface for the selected mode: Deep Dive = reading view with a minute-accurate timer and "End session" button; Flashcard = click-to-flip cards drawn from the topic's subtopics with a Know / Review again split; Quiz = 5 multiple-choice questions generated from the subtopics with a score summary; Quick Review = a rapid pill-deck that counts each tap. On completion, persist the session to a sessions[] array in localStorage.
  2. Make the app stateful end to end. When a session ends, update: (a) the Sessions tab with a new row, (b) the top Sessions tile, (c) the topic's mastery and last studied, (d) the Daily Goal ring's "minutes logged", (e) the streak pill if today is a new day.
  3. Turn the "read-only" settings tiles into real controls. Explanation Depth → a segmented control (ELI5 / Standard / Technical / Research). AI Tutor Style → segmented control (Socratic / Direct / Coach / Interview). Notifications → toggle plus a <input type="time"> for the reminder hour. Topic Graph → clicking the toggle should actually reveal a small force-directed graph view.
  4. Improve modal ergonomics. Close on Esc, close on backdrop click, trap focus inside the modal, restore focus to the triggering element on close, and add aria-modal / aria-labelledby.
  5. Redesign the toast. Use a top-right stack with 4-second auto-dismiss, entry slide, color-coded by type (success / info / warning), and a live region (role="status") so screen readers announce "Starting flashcard session…".
  6. Goal ring improvements. When logged ≥ goal, switch to a filled "goal met ✓" state with a subtle confetti flash on transition; show a small tooltip on hover listing today's contributing sessions.
  7. Flesh out the streak pill and avatar. Clicking the streak pill opens a heatmap of the last 90 days; clicking the avatar opens a profile menu (switch user, export data, reset session log).
  8. Data import/export. Add a small "JSON" control in Settings that lets the user paste or download a JSON representation of topics + sessions, so the demo is genuinely data-driven.
  9. Accessibility pass. Give tab buttons role="tab" with arrow-key navigation, ensure 4.5:1 contrast on the pastel category pills, label the progress bars with aria-valuenow, and make the Study Mode tiles proper <button role="radio">s.
  10. Clean up stray copy. Remove the literal "Stop Claude" string currently appended to the end of the body and audit the file for any other leftover debug text.