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 DaisyUI dark theme
- Settings Persistence - Preferences saved to database
- Course Management - Delete courses with confirmation dialog
- Loading States - Skeleton loaders and spinners throughout
- Rust 1.80+
- Dioxus CLI:
cargo install dioxus-cli
Building and running on Linux requires several system libraries (WebKit2GTK, GTK3, SQLite3).
Automatic Setup (Recommended):
chmod +x scripts/setup-linux.sh
./scripts/setup-linux.shManual Installation:
| Distribution | Command |
|---|---|
| Ubuntu/Debian | sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libsqlite3-dev |
| Fedora | sudo dnf install webkit2gtk4.1-devel gtk3-devel sqlite-devel |
| Arch Linux | sudo pacman -S webkit2gtk-4.1 gtk3 sqlite |
git clone https://github.com/k5602/course_pilot.git
cd course_pilot
cp .env.example .envEdit .env:
DATABASE_URL=course_pilot.db
YOUTUBE_API_KEY=your_youtube_api_key_here
GEMINI_API_KEY=your_gemini_api_key_here # optionaldiesel migration rundx serve
# or with logging:
RUST_LOG=info dx servedx build --releaseOn Linux, you can also use dx bundle --release to create a .deb package.
We provide two formats for Linux:
- Debian Package (.deb): Recommended for Ubuntu, Mint, Pop!_OS. Install via
sudo apt install ./course-pilot-linux-x64.deb. - Generic Tarball (.tar.gz): Recommended for Arch or other distros. Extract and run
course-pilot-launcher. This script will automatically check for missing dependencies and offer to install them for you.
Download the .zip, extract, and run course_pilot.exe.
| 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 development server
dx serve
# Run tests
cargo test --lib
# Lint
cargo clippy --all-targets -- -D warnings
# 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/
├── pages/ # Dashboard, CourseView, VideoPlayer, etc.
├── custom/ # Reusable components
└── hooks.rs # Data loading hooks
MIT License - see LICENSE for details.