How tchanwangsa/oculus works
Oculus is a macOS desktop knowledge base for UniMelb coursework. A student signs in, manually syncs Canvas, Ed Discussion, and Echo360 content, then files are parsed, rendered as page images, embedded, and indexed locally. The student searches or asks a Claude Code/Codex agent questions; the agent uses the CLI over the same library. Projects, lectures, calendar, storage, and task views are additional product branches. The tree does not include the documented Python sidecar, so its path is unavailable; several backend connections remain inferred only where the README states them.
Components 31
Frontend Experience
- React App
app/src/main.tsx - App Routes
app/src/routes.tsx - Sync UI
app/src/pages/SyncPage.tsx - Auth UI
app/src/hooks/useAuth.ts - Pipeline Monitor
app/src/components/sync/PipelineTable.tsx - Storage UI
app/src/components/settings/StorageSection.tsx
Rust Core
- Tauri Core
app/src-tauri/src/lib.rs - Canvas Auth
app/src-tauri/src/auth.rs - Okta SSO
app/src-tauri/src/okta.rs - Course Sync
app/src-tauri/src/sync.rs - Storage Reporter
app/src-tauri/src/storage.rs
Ingest Pipeline
- PDF Parser
app/src-tauri/src/parse/mod.rs - Python Sidecar
- Page Rendering
app/src-tauri/src/parse/mineru/render.rs - Image Embedding
app/src-tauri/src/embed/mod.rs - MinerU Cloud
- Voyage API
Knowledge Store
- Retrieval Engine
app/src-tauri/src/retrieval.rs - SQLite Database
app/src-tauri/src/store.rs - Local Files
app/src-tauri/src/paths.rs
Workflows
- Chat UI
app/src/pages/ChatPage.tsx - Agent Harness
app/src-tauri/src/harness/mod.rs - Oculus CLI
app/src-tauri/src/bin/oculus.rs - Projects UI
app/src/pages/ProjectsIndexPage.tsx - Project Engine
app/src-tauri/src/projects.rs - Lecture UI
app/src/pages/subject/LecturePage.tsx - Lecture Engine
app/src-tauri/src/lectures.rs - Calendar UI
app/src/pages/CalendarPage.tsx - Calendar Engine
app/src-tauri/src/calendar.rs
Other components
- Student
- Agent Process
Connections 37
- Student → React App: uses
- React App → App Routes: renders
- App Routes → Sync UI: dispatches
- App Routes → Auth UI: dispatches
- App Routes → Chat UI: dispatches
- App Routes → Projects UI: dispatches
- App Routes → Lecture UI: dispatches
- App Routes → Calendar UI: dispatches
- Auth UI → Canvas Auth: invokes
- Canvas Auth → Okta SSO: authenticates
- Sync UI → Course Sync: starts
- Course Sync → Canvas Auth: uses session
- Course Sync → Local Files: downloads
- Course Sync → PDF Parser: queues files
- Course Sync → SQLite Database: stores metadata
- Course Sync → Pipeline Monitor: emits stages
- PDF Parser → Python Sidecar: parses PDFs
- PDF Parser → MinerU Cloud: submits batches
- PDF Parser → Page Rendering: renders pages
- Page Rendering → Image Embedding: supplies images
- Image Embedding → Voyage API: requests vectors
- Image Embedding → SQLite Database: stores embeddings
- Retrieval Engine → SQLite Database: reads index
- Chat UI → Agent Harness: starts agent
- Agent Harness → Agent Process: runs subprocess
- Agent Process → Oculus CLI: uses tools
- Oculus CLI → Retrieval Engine: searches pages
- Oculus CLI → Project Engine: plans work
- Projects UI → Project Engine: edits projects
- Project Engine → SQLite Database: persists tasks
- Lecture UI → Lecture Engine: loads playback
- Lecture Engine → Local Files: reads recordings
- Lecture Engine → SQLite Database: stores chapters
- Calendar UI → Calendar Engine: loads events
- Calendar Engine → SQLite Database: reads dates
- Storage UI → Storage Reporter: requests report
- Storage Reporter → Local Files: walks files