Transform YouTube playlists into structured, intelligent study plans
A modern Rust desktop application that automatically analyzes video-based courses, creates logical learning structures, and generates personalized study schedules.
- Playlist Import - Import YouTube playlists with automatic metadata extraction
- Smart Modules - Automatic grouping of videos into logical modules
- Progress Tracking - Track video completion with visual progress bars
- Video Navigation - Previous/next video links for seamless learning flow
- Session Planning - Plan study sessions based on your cognitive limit (15-120 min/day)
- AI Companion - Ask questions about video content (requires Gemini API)
- Quiz Generation - Auto-generated MCQ quizzes from video context
- Per-Video Notes - Take and persist notes for each video
- Dark Theme - Eye-friendly dark theme (libadwaita)
- Settings Persistence - Preferences saved to database
- Course Management - Delete courses with confirmation dialog
- Loading States - Skeleton loaders and spinners throughout
- Rust 1.88+
Building and running on Linux requires several system libraries (GTK4, libadwaita, GStreamer, SQLite3).
Automatic Setup (Recommended):
chmod +x scripts/setup-linux.sh
./scripts/setup-linux.shManual Installation:
| Distribution | Command |
|---|---|
| Ubuntu/Debian | sudo apt install libgtk-4-dev libadwaita-1-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgraphene-1.0-dev libsqlite3-dev |
| Fedora | sudo dnf install gtk4-devel libadwaita-devel gstreamer1-devel gstreamer1-plugins-base-devel graphene-devel sqlite-devel |
| Arch Linux | sudo pacman -S gtk4 libadwaita gstreamer gst-plugins-base graphene sqlite |
git clone https://github.com/k5602/course_pilot.git
cd course_pilot
cp .env.example .envEdit .env:
DATABASE_URL=course_pilot.db
GEMINI_API_KEY=your_gemini_api_key_here # optionaldiesel migration runcargo run --release
# or with logging:
RUST_LOG=info cargo run --releaseWe provide a generic tarball (.tar.gz) with each release. Extract and run the binary directly:
tar -xzf course-pilot-linux-x64.tar.gz
./course_pilot| Variable | Required | Default | Description |
|---|---|---|---|
DATABASE_URL |
No | course_pilot.db |
SQLite database path |
YOUTUBE_API_KEY |
No | - | Optional YouTube Data API v3 key (unused) |
GEMINI_API_KEY |
No | - | Gemini API key for AI features |
Course Pilot uses API-free playlist import by default. A YouTube API key is not required for normal use.
- Visit Google AI Studio
- Create an API key
API keys can also be configured in Settings page within the app.
# Run
cargo run --release
# Run tests
cargo test --lib
# Lint
cargo clippy
# Format
cargo fmt
# Rebuild database
rm course_pilot.db && diesel migration runsrc/
├── application/ # Use cases and DI container
├── domain/ # Entities, ports, value objects
├── infrastructure/ # SQLite, YouTube, LLM adapters
└── ui/
├── app.rs # Main application entry point
├── layout.rs # Top-level layout
├── navigation.rs # Navigation state management
├── right_panel.rs# Right sidebar panel
├── shortcuts.rs # Keyboard shortcuts
├── state.rs # UI state management
├── toast.rs # Toast notifications
├── css.rs # Custom CSS styling
├── dialogs/ # Import dialogs, etc.
└── pages/ # Dashboard, CourseView, VideoPlayer, etc.
MIT License - see LICENSE for details.