UCSD students pursuing double majors, minors, or complex degree paths often lose track of course ordering and prerequisite chains. Course Flow turns that complexity into an interactive graph you can reason about at a glance: each node is a course, each edge is a prerequisite, and the entire thing runs in your browser with no account or server.
Prerequisite Graph Engine: The core of Course Flow is a graph built on React Flow with D3 force simulation and hierarchy for auto-layout. It renders 7,227 courses from the UCSD catalog with fully parsed AND/OR prerequisite logic. Prerequisite chains expand automatically as you add courses, and OR-branches surface as unresolved nodes until you pick a path. Nodes are color-coded by status (taken, in progress, planning, not started), and status changes propagate downstream through the entire dependency tree.
Degree Plan & Audit Import: Students can import from UCSD's degree plan data. 173 major plans and 112 minor programs are bundled, selecting up to two majors, two minors, a college, and university requirements in one modal. The app also parses degree audit PDFs directly in the browser using pdfjs-dist, extracting course IDs, completion status, and term/grade data, then merging them non-destructively into the existing graph.
Planning Rules & Progress: Course Flow enforces UCSD's overlap constraints between programs. Users can define course groups and set overlap caps (by course count, unit count, or both) between them. A progress dashboard tracks completion stats per program, and courses removed from a degree plan are tracked separately with one-click restore. The full plan is exportable to a versioned JSON format with forward-compatible migration on import.
Engineering Decisions: Everything runs client-side, and no data leaves the browser. The app uses Radix UI primitives with shadcn-style components, Tailwind CSS v4 for styling, and a full undo/redo stack for all graph mutations. The catalog data is pre-scraped using a Python pipeline (requests + BeautifulSoup) with separate scripts for courses, degree plans, and search index generation. Testing covers unit (Vitest), planner regression, Python scraper tests (pytest), and end-to-end flows (Playwright).