Random Pick: Meridian
Loaded SRC_URL
https://producingtechnology.com/65-apps/wangshupeng_184764_15200455_meridian.html
JSON source (via CORS proxy): wangshupeng_184764_15023612_dream_app.json
Summary of Behavior
Meridian v1.0.0 — tagline “Learn anything. Remember everything. Connect the dots.” — is a polished dark-mode learning dashboard for a user named William (12-day streak, 45-min daily goal). It fetches a JSON knowledge-graph and exposes four tabbed views:
- Dashboard. Topic cards (Machine Learning 82%, Linear Algebra 74%, Probability & Statistics 68%, Systems Design 55%) with animated mastery bars, a circular SVG “daily goal” ring that fills to today’s minutes vs. the 45-min goal, and a Recommendations panel (review / explore / connection badges with priority dots).
- Topics. Same cards with subtopic pill tags shown expanded.
- Sessions. Recent study sessions with mode, duration, note preview, and a recall-score percentage.
- Settings. A grid with two functional toggles (Notifications, Topic Graph) plus two read-only value rows (Explanation Depth, AI Tutor Style).
Clicking any topic card opens a modal with mastery, subtopics, connected-topic pills (clickable — they swap the modal to the connected topic), and four study-mode buttons (Deep Dive / Flashcard / Quiz / Quick Review). “Start Session” fires a toast “▶ Starting deep dive session for Machine Learning” and closes the modal.
Networking is noteworthy: the app tries three public CORS proxies
(corsproxy.io, api.cors.lol, api.codetabs.com) in
sequence and falls back if any fail, then shows a red error banner if all three do.
Things That Didn’t Work As Expected
- Start Session is a toast, not a session. All four study modes collapse to the same no-op — no flashcards, no quiz questions, no timer, no recall capture. “Remember everything” is not demonstrated anywhere.
- The “daily goal” math is off. The ring sums all sessions in the JSON regardless of date, so the “Today’s sessions” label shows 63 min even though the sessions are all dated March 4–11. It should be filtered to today.
- Half the settings are read-only. Explanation Depth and AI Tutor Style render their value but have no control to change them. Toggles that do work don’t persist across reload.
- No persistence at all. Toggle states, selected study mode, and the active tab all reset on refresh.
- Topic Graph toggle is just a switch. There is no graph view, so enabling it changes nothing visible.
- Third-party proxy dependency. Using public CORS proxies for a demo is fragile — when they rate-limit or go down, the app shows a generic red failure message with no retry button. The right fix is to serve the JSON from the same origin (the apps and JSON are on the same host already — the proxies are unnecessary).
-
Recommendations point to Insight-type items with no destination. When
a rec has no
topic_idonlyinsight, the “Study now” button is omitted, leaving a dead-ended card. - Mastery scores never change. Clicking through sessions / flashcards (even if they were real) would have no effect on the displayed mastery.
Prompt to Improve the App
Take Meridian from a pretty dashboard to a working learning loop. In this order:
- Drop the CORS proxies. The JSON lives on the same origin as the HTML — fetch it directly with a relative path (
../a1/15-json/….json) and delete thePROXIESarray. Add a real retry button to the error state.- Fix the daily-goal ring. Filter
data.sessionsto today’s local date before summing. Show an explicit “no sessions today” state at 0 min. Render a subtle overflow ring when the user exceeds 100%.- Make Flashcard and Quiz real, at minimum. For each topic, generate 5–10 flashcards via an LLM call (
claude-haiku-4-5) seeded with the topic title, category, and subtopics. Render a one-card-at-a-time flipper with “Got it / Not yet” buttons that feed a spaced-repetition next-review date. Quiz mode: 5 MCQs with 1 correct answer, scored at the end. On session end, append todata.sessionswith a realrecall_scoreand nudgemastery_scoreup or down.- Persist user-mutable state in
localStorage(meridian.user.v1): toggles, selected mode, last-viewed tab, per-topic mastery drift from sessions, and the sessions array. Boot merges server JSON (as defaults) with the local overlay.- Build the Topic Graph the toggle promises. Render an SVG force-layout using
topic.connectionsas edges andmastery_scoreas node radius; click a node to open the topic modal.- Make all four settings editable. Explanation Depth becomes a three-stop slider; AI Tutor Style becomes a
<select>. Both values thread into the LLM prompt for flashcards and quizzes so the setting changes actually affect output.- Make recommendations actionable. An insight-only rec should at minimum route to a generic “Reflect” view that lets the user journal against the insight; don’t render dead cards.