MCPcopy Index your code
hub / github.com/BlackboardFS/bbfs

github.com/BlackboardFS/bbfs @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
95 symbols 165 edges 8 files 2 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

BlackboardFS

Blackboard: noun A website so bad that it might as well be a network drive.

BlackboardFS is a filesystem driver that allows you to view your Blackboard course contents as if they were normal files and folders on your system!

A banner image demonstrating how BlackboardFS maps Blackboard courses to folders

The filesystem matches Blackboard's structure as closely as possible, with the same familiar sidebar names and even the course's internal folder structure!

$ tree Blackboard/COMP3506
Blackboard/COMP3506
├── Announcements.desktop
├── Assessment
│   ├── Assignment One: Due Week 6
│   ├── Blackboard.desktop
│   └── Quiz Solutions
│       ├── Blackboard.desktop
│       ├── quiz1-sol.pdf
│       ├── quiz2-sol%281%29.pdf
│       └── quiz3-sol.pdf
├── Blackboard.desktop
├── Course Help
│   ├── Blackboard.desktop
│   └── Student services and resources
├── Course Profile (ECP).desktop
├── Course Staff.desktop
├── Ed Discussion.desktop
├── Gradescope.desktop
├── Learning Resources
│   ├── Blackboard.desktop
│   ├── Code Snippets
│   │   ├── Blackboard.desktop
│   │   ├── Week 1
│   │   ├── Week 2
│   │   ├── Week 3
│   │   └── Week 4
│   ├── COMP3506-7505-2023-plan-v3.pdf
│   ├── Course Reading List.desktop
│   ├── Lecture_Recordings.desktop
│   ├── Resources

--snip--

15 directories, 70 files

Links to external resources are exposed as .url (Windows), .webloc (macOS) or .desktop (Linux) files, so you can easily reach Gradescope, echo360, and even get back to Blackboard's own web UI right from your file browser!

As a bonus, browsing the filesystem is significantly faster than browsing the Blackboard web UI, which is very helpful when you're stuck on slow campus WiFi.

Requirements

To build from source, the latest stable Rust toolchain must be installed. Other platform-specific runtime dependencies are described below:

Windows

BlackboardFS requires Dokan be installed on your system.

macOS

BlackboardFS requires macFUSE be installed on your system.

Linux

The auth window requires GTK3, WebKitGTK, and related libraries be installed on your system. Additionally, to mount the filesystem, FUSE3 is required. Make sure the following packages are installed:

Debian/Ubuntu

sudo apt install libwebkit2gtk-4.1-dev libfuse3-dev

Fedora

sudo dnf install gtk3-devel webkit2gtk4.1-devel fuse3-devel

Arch/Manjaro

sudo pacman -S webkit2gtk-4.1 fuse3

Installation

Clone this repo to a location of your choosing. Then

git submodule update && git submodule init

You can then cargo run -p bbfs-cli or cargo install --bin bbfs-cli as you wish.

Usage

This is a FUSE-based filesystem. To mount:

bbfs <mount_point>

This will spawn a browser window for you to log in with your UQ login. WE ARE ABLE TO INJECT ARBITRARY CODE INTO THIS BROWSER WINDOW, SO MAKE SURE YOU READ AND UNDERSTAND OUR CODE TO MAKE SURE WE'RE NOT STEALING YOUR CREDENTIALS (the relevant code is in cookie_monster/; everything else only gets a session token).

To unmount the filesystem:

fusermount -u <mount_point>

or on MacOS:

diskutil unmount <mount_point>

Extension points exported contracts — how you extend this code

CookieMonster (Interface)
(no doc) [2 implementers]
cookie-monster/src/lib.rs
BbClient (Interface)
(no doc) [1 implementers]
bbfs-api/src/lib.rs

Core symbols most depended-on inside this repo

get_type
called by 7
bbfs-scrape/src/lib.rs
attr
called by 7
bbfs-fuse/src/lib.rs
create_link_file
called by 4
bbfs-scrape/src/lib.rs
get_page
called by 4
bbfs-scrape/src/lib.rs
get_size
called by 3
bbfs-scrape/src/lib.rs
next_index
called by 2
bbfs-dokan/src/lib.rs
get_courses
called by 2
bbfs-scrape/src/lib.rs
get_root
called by 2
bbfs-scrape/src/lib.rs

Shape

Method 60
Class 17
Function 10
Enum 6
Interface 2

Languages

Rust100%

Modules by API surface

bbfs-scrape/src/lib.rs41 symbols
bbfs-fuse/src/lib.rs15 symbols
bbfs-dokan/src/lib.rs13 symbols
cookie-monster/src/headless.rs10 symbols
bbfs-cli/src/main.rs7 symbols
cookie-monster/src/webview.rs5 symbols
cookie-monster/src/lib.rs2 symbols
bbfs-api/src/lib.rs2 symbols

For agents

$ claude mcp add bbfs \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact