Inspiration
I tried to self-teach calculus and hit a wall. Not because the material was too hard, but because I had holes in my foundation and no idea which ones or where to start fixing them. Curricula can't diagnose your gaps. Tutors can, but they cost $50-100/hr. I wanted to build the thing that sits in between: something that finds exactly what you're missing and builds a path from there.
What it does
Nodex takes a learning goal like "I want to learn calculus" and turns it into a personalized knowledge graph. It diagnoses gaps in your prerequisites through an adaptive assessment, then maps the shortest path from those gaps to your target concept. Each node in the graph is a lesson. You can only advance by proving mastery through a quiz, so you never move forward on shaky ground.
Once a graph is generated, it's stored in the database. One generation cost, then every future learner with the same goal gets it instantly.
How I built it
Stack: Next.js (App Router), React, TypeScript, Tailwind, Supabase, React Flow, Dagre, Claude API, p5.js Canonicalization normalizes freeform prompts into structured topics so different phrasings resolve to the same graph.
Graphs are directed acyclic graphs with topological ordering. Enrichment (lessons, quizzes, visuals, interactive sketches) runs asynchronously in the background so learners can start immediately. Progress is stored server-side and survives refreshes and device switches.
Challenges I ran into
Building this solo was tough: the graph engine, the diagnostic system, the enrichment pipeline, the frontend, the state management, routing.
Routing: The hardest part was making lesson routing reliable. Early versions used client-side resolution from URL params, but encoded prerequisite node IDs kept breaking navigation. Moving lesson resolution to the server eliminated the whole class of bugs.
Diagnostics: The adaptive diagnostic isn't a generic placement test. It has to be generated from the prerequisite structure of the specific graph, targeting the right nodes to find the exact frontier of what the learner knows.
Accomplishments I'm proud of
Being able to fit LLM outputs, which are high variance by nature, into a specific mold using LLM-as-judge evals and strict deterministic guardrails.
What I learned
How to design fail-soft pipelines, how to think about learning as a graph problem, how to manage async enrichment without blocking the user, and how to keep a full-stack app stable when you're the only person working on it.
What's next for Nodex
Spaced repetition integrated into the graph so mastery decays realistically. Collaborative graphs where multiple learners contribute to and refine the same knowledge structure. And expanding beyond STEM into any domain with prerequisite dependencies.
Built With Claude API, Dagre, Next.js, p5.js, React, React Flow, Supabase, Tailwind CSS, TypeScript
Built With
- claude
- postgresql
- react
- supabase
- typescript

Log in or sign up for Devpost to join the conversation.