This application is provided solely for educational, personal, and technical purposes. By using this application, you acknowledge and agree that you are solely responsible for ensuring that your use complies with all applicable SHSID policies, platform terms, laws, and regulations.
The developer does not endorse, encourage, or authorize any misuse of this application, including any use that violates school policies, platform rules, or legal requirements. To the maximum extent permitted by applicable law, the developer disclaims all responsibility and liability for any misuse of the application, any violation committed by users, and any direct or indirect consequences resulting from such use.
Requires Node.js 20.x or 22.x LTS installed manually (24.x is not supported).
- Download the ZIP from GitHub Releases.
- Unzip it.
- Double-click one launcher in the project folder:
start-gui.bat(Windows)start-guui.sh(macOS/Linux)- Optional TUI launchers:
start.bat/start.sh
- The launcher now automatically:
- checks Node/npm compatibility,
- installs dependencies (TUI launchers use lightweight bootstrap without GUI/Electron packages),
- builds if needed,
- installs Playwright Chromium,
- runs setup if config is missing/invalid,
- launches download.
- (first run may take longer while dependencies/build/Playwright install complete)
- if install is interrupted, rerunning launcher repairs incomplete
node_modules
- Enter Blackboard credentials once in setup.
- Select courses/files in TUI/GUI checkboxes.
- On future runs, double-click the same launcher again.
See README-USER.md for short student instructions.
git clone https://github.com/Panther114/WhiteBoard-Downloader.git
cd WhiteBoard-Downloader
npm install
npm run build
npm start downloadnpm run bootstrap– TUI bootstrap (installs required non-GUI dependencies, builds CLI, installs Playwright Chromium)npm run bootstrap:gui– GUI bootstrap (installs full GUI stack including Electron, builds CLI+GUI, installs Playwright Chromium)npm run setupornode dist/cli.js setup– setup wizardnode dist/cli.js setup --reset– recreate config from scratchnode dist/cli.js setup --test-login– save config then test Blackboard login (blank password keeps existing saved password)node dist/cli.js config-check– launcher-focused setup validity checknode dist/cli.js download– interactive download flownode dist/cli.js doctor– environment and config checksnode dist/cli.js doctor --login– includes a real login testnode dist/cli.js config– print current effective confignpm run gui– launch desktop GUI (no rebuild)npm run gui:dev– GUI development modenpm run build:gui– build CLI + GUI bundles
Only these file types are accepted:
pdf,ppt,pptx,doc,docx,xls,xlsx
Extension normalization behavior:
- Keeps valid supported extension if already present.
- Appends extension from MIME when name has no supported extension (example:
download+application/pdf->download.pdf). - Rejects blocked extensions (archive/image/media/text/data) even when MIME claims a supported document.
- Replaces Blackboard-ish unknown extensions with MIME-derived supported extensions when MIME is supported (example:
download.aspx+ PDF MIME ->download.pdf).
- Download progress percentage is byte-based when file sizes are known.
- File count remains visible as secondary progress.
- If no known sizes are available, progress falls back to clearly labeled file-count mode.
After each run:
- Text summary:
logs/latest-summary.txt - JSON summary:
<DOWNLOAD_DIR>/whiteboard-run-report.json - Main logs:
logs/whiteboard.log
See TROUBLESHOOTING.md.