How albiehao/ischool works
iSchool is a self-hosted learning platform spanning a Vue web client, FastAPI service, and native iOS study timer. Learners organize courses and chapters, consume video, and record progress; daily tasks, focus sessions, schedules, review, notes, vocabulary, plans, and analytics support the broader study workflow. Media sources are normalized to unified paths across local, WebDAV/AList, and course plugins. The sampled code confirms application routing, local-storage management, course-group UI calls, gaze tracking, and iOS API requests; other domain links are shown only at subsystem level based on the README and tree.
Main entry points: v1 API routes · models Domain records · tasks.py Study planning · main.py FastAPI app
Components 21
Learning clients
- Web application
frontend/src/App.vue - Learning pages
frontend/src/views - Web API clients
frontend/src/api - iOS timer
ios/iSchoolTimer/RootView.swift - iOS API client
ios/iSchoolTimer/APIClient.swift
API boundary
- FastAPI app
backend/app/main.py - API routes
backend/app/api/v1
Learning domains
- Courses and progress
backend/app/api/v1/courses.py - Study planning
backend/app/api/v1/tasks.py - Study extras
backend/app/api/v1/study_extras.py - Learning analytics
backend/app/services/learning_analytics_service.py
Media sources
- Playback and scanning
backend/app/services - Unified storage
backend/app/services/storage_service.py - WebDAV sources
backend/app/services/webdav_service.py - Course plugins
backend/app/plugins
Platform services
- Identity and access
backend/app/core/auth.py - Domain services
backend/app/services - Domain records
backend/app/models - Database
backend/app/core/database.py
Other components
- Learner
- Media platforms
Connections 28
- Learner → Web application: uses
- Web application → Learning pages: renders
- Learning pages → Web API clients: requests
- Web API clients → FastAPI app: HTTP calls
- Learner → iOS timer: uses
- iOS timer → iOS API client: requests data
- iOS API client → FastAPI app: HTTP calls
- FastAPI app → API routes: mounts routes
- API routes → Identity and access: checks access
- API routes → Courses and progress: dispatches
- API routes → Study planning: dispatches
- API routes → Study extras: dispatches
- API routes → Playback and scanning: dispatches
- API routes → Unified storage: manages sources
- API routes → WebDAV sources: manages mounts
- API routes → Course plugins: manages plugins
- API routes → Domain services: dispatches
- Domain services → Domain records: reads and writes
- Courses and progress → Domain records: reads and writes
- Study planning → Domain records: reads and writes
- Study extras → Domain records: reads and writes
- Learning analytics → Domain records: reads records
- Domain records → Database: persists in
- Unified storage → Domain records: queries sources
- WebDAV sources → Media platforms: mounts from
- Course plugins → Media platforms: integrates platforms
- Playback and scanning → Unified storage: resolves paths
- Study planning → Learning analytics: summarizes activity