CourseVault is a fully offline desktop application for organizing and watching your downloaded video courses. No accounts, no cloud, no tracking - everything lives on your machine.
- Automatic course scanning - point CourseVault at a folder and it builds the full module/lesson hierarchy automatically, supporting up to 4 levels of nesting
- Progress tracking - lessons are marked complete as you watch; pick up exactly where you left off
- Wide format support - plays MP4, WebM, MOV natively; remuxes MKV, AVI, TS, FLV and more to MP4 on the fly via FFmpeg (no re-encoding, just a container swap)
- Manual course builder - create and structure courses by hand when auto-scan isn't what you need
- Timestamped notes & bookmarks - attach notes to any moment in a video, exportable to Markdown
- Subtitle support - load
.srtor.vttfiles alongside any lesson - Watchdog auto-detection - new video files dropped into watched folders are picked up without a manual rescan
- Course completion celebration - animated confetti popup when you finish a course
- Debug mode - optional timestamped log files for diagnosing issues
| Layer | Technology |
|---|---|
| UI shell | pywebview (WebView2 on Windows, WKWebView on macOS) |
| Backend | Flask (local HTTP server, 127.0.0.1) |
| Database | SQLite via Python sqlite3 (WAL mode) |
| Video remux | FFmpeg (optional, user-supplied) |
| File watching | Watchdog |
| Frontend | Vanilla JS + CSS (no frameworks) |
- Python 3.10+
- Windows 10/11 (WebView2 runtime, included in Win11) or macOS 11+
- FFmpeg - only needed for MKV/AVI/TS playback; MP4 and WebM work without it
CourseVault uses PyInstaller to produce a self-contained .exe (Windows) or .app (macOS).
pip install pyinstaller
pyinstaller coursevault.specOutput lands in dist/CourseVault/CourseVault.exe. Copy the entire dist/CourseVault/ folder to distribute - the exe is not standalone without its _internal/ directory.
FFmpeg is not bundled. Place
ffmpeg.exeanywhere on your machine and set the path in Settings → FFmpeg.
When running as a compiled app, all user data is stored outside the install directory so it survives updates:
| Platform | Location |
|---|---|
| Windows | %APPDATA%\CourseVault\ |
| macOS | ~/Library/Application Support/CourseVault/ |
| Linux | ~/.coursevault/ |
Contents:
CourseVault/
├── data/
│ └── coursevault.db ← SQLite database (courses, progress, notes)
├── cache/
│ └── *.mp4 ← Remuxed video cache
└── debug/
└── coursevault_*.log ← Debug logs (when debug mode is on)
| Type | Formats |
|---|---|
| Native (no FFmpeg needed) | .mp4 .webm .mov .m4v .mpeg .mpg .3gp |
| Remux via FFmpeg | .mkv .avi .flv .wmv .ts .m2ts .vob .divx .rm |