How jl115/visual-learner works
Visual Learner is a desktop app for turning PDFs into interactive visual learning material. The principal workflow starts with a learner uploading a document, then proceeds through backend document processing and knowledge-graph creation; the UI also exposes a document library, graph exploration, quizzes, mastery progress, and achievements. The README documents the frontend feature slices and backend layering, while sampled code confirms app routing, Electron file-reading IPC, and graph assembly/persistence. Most domain-specific handler wiring and several feature implementations are not sampled, so uncertain links are omitted.
Main entry points: controllers Request orchestration · router.ts App router · documentUpload Document upload · repositories Domain repositories
Components 26
Desktop shell
- Electron main
electron/main.ts - Preload bridge
electron/preload.ts
Learner interface
- App bootstrap
frontend/src/app/main.ts - App router
frontend/src/app/router.ts - Document upload
frontend/src/features/documentUpload - Document library
frontend/src/features/documentLibrary - Knowledge graph UI
frontend/src/features/knowledgeGraph - Quiz session UI
frontend/src/features/quizSession - Mastery progress UI
frontend/src/features/masteryProgress - Achievements UI
frontend/src/features/achievements
Backend API
- Upload endpoint
backend/app/routers/upload.py - Document endpoints
backend/app/routers/documents.py - Graph endpoints
backend/app/routers/graphs.py - Quiz endpoints
backend/app/routers/quizzes.py - Progress endpoints
backend/app/routers/progress.py - Score endpoints
backend/app/routers/scores.py - Request orchestration
backend/app/controllers
Learning services
- Document reader
backend/app/services/file_reader_service.py - Text processing
backend/app/services/nlp_pipeline.py - Graph construction
backend/app/services/graph_service.py - Quiz logic
backend/app/services/quiz_service.py - Score and progress logic
backend/app/services/score_service.py
Persistence
- Domain repositories
backend/app/repositories - SQL database
backend/app/database
Other components
- Learner
- Ollama service
Connections 37
- Learner → Document upload: selects PDF
- Learner → Document library: browses documents
- Learner → Knowledge graph UI: explores graph
- Learner → Quiz session UI: takes quiz
- Learner → Mastery progress UI: checks mastery
- Learner → Achievements UI: views awards
- Electron main → Preload bridge: exposes IPC
- Preload bridge → Document upload: provides file access
- App bootstrap → App router: installs
- App router → Document upload: routes to
- App router → Document library: routes to
- App router → Knowledge graph UI: routes to
- App router → Quiz session UI: routes to
- App router → Mastery progress UI: routes to
- App router → Achievements UI: routes to
- Document upload → Upload endpoint: submits document
- Document library → Document endpoints: requests documents
- Knowledge graph UI → Graph endpoints: requests graph
- Quiz session UI → Quiz endpoints: requests quiz
- Mastery progress UI → Progress endpoints: requests progress
- Achievements UI → Score endpoints: requests scores
- Upload endpoint → Request orchestration: dispatches request
- Document endpoints → Request orchestration: dispatches request
- Graph endpoints → Request orchestration: dispatches request
- Quiz endpoints → Request orchestration: dispatches request
- Progress endpoints → Request orchestration: dispatches request
- Score endpoints → Request orchestration: dispatches request
- Request orchestration → Document reader: processes documents
- Request orchestration → Text processing: processes text
- Request orchestration → Graph construction: orchestrates graph
- Request orchestration → Quiz logic: orchestrates quizzes
- Request orchestration → Score and progress logic: orchestrates scores
- Graph construction → Domain repositories: persists and reads
- Quiz logic → Domain repositories: uses persistence
- Score and progress logic → Domain repositories: uses persistence
- Domain repositories → SQL database: reads and writes
- Graph construction → Ollama service: optional integration