Synchronize modules, assignments and files from Canvas by Instructure to your local computer
Project description
Canvas-Sync
Synchronize Canvas LMS courses and files to a local folder, preserving course structure and organization.
#Canvas #Instructure #LMS #Synchronize #Education
Table of Contents 📚
- Overview
- Key Features
- Quick Start
- Installation
- Usage
- Configuration
- Security & Privacy
- Development
- Links
- Changelog
Overview
Canvas-Sync mirrors your Canvas course structure locally so you can browse course materials offline. It downloads modules, assignments, pages, files, and optional external resources into a tidy folder layout.
Key Features ⭐
- Automatic synchronization of modules, assignments, and files
- Preserves course/module/subfolder structure locally
- Configurable: choose which content types to sync
- Optional download of external files referenced in descriptions
- Simple, user-friendly CLI with interactive setup (Typer + Rich)
Quick Start 🚀
Follow these steps to get up and running quickly.
-
Generate a Canvas API token
- Log in to your Canvas instance → Account → Settings → Approved Integrations → New Access Token.
- Copy the token and keep it secure. You will use it during setup.
-
Install Canvas-Sync (pick one)
Using
uv(recommended):uv add canvas-sync-py uv pip install canvas-sync-py
With
pip:pip install canvas-sync-py
From source (developer mode):
git clone https://github.com/Sang-Buster/Canvas-Sync.git cd Canvas-Sync pip install -e . PYTHONPATH=src canvas --help
-
Launch and configure
- Run
canvasto launch the interactive setup. Choose choose a local sync folder, provide your Canvas domain, the API token from step 1, and select courses to be synced. - After setup, run
canvas syncto begin downloading course content.
- Run
-
Usage, Configuration, and Common Flags
canvas --help— Launch CLI and show help messagecanvas setup— Re-run setup and update saved valuescanvas info— Show current saved settingscanvas sync— Start synchronization using saved settingscanvas reset— Reset and remove saved encrypted settings (use when you forgot your password)
Configuration notes:
- Settings are stored encrypted locally. Use
canvas --setupto change them orcanvas resetto remove them.
Security & Privacy 🔒
- Your Canvas API token is encrypted locally using AES and a password-derived key.
- Canvas-Sync is read-only: it only downloads course content and does not modify Canvas.
- Do not share your token; if compromised, revoke it in Canvas and run
canvas reset.
Links 🔗
- Architecture notes: docs/ARCHITECTURE.md
- Releases and changelog: CHANGELOG.md
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file canvas_sync_py-0.1.0.tar.gz.
File metadata
- Download URL: canvas_sync_py-0.1.0.tar.gz
- Upload date:
- Size: 29.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
366eda881d71219db434c8375397c7c708885d43a2dea795a47fc58102541b5d
|
|
| MD5 |
6507992e10adb7ee44959ab158b8accc
|
|
| BLAKE2b-256 |
2612c8071f303c3ac1bb905683021c32aa6abeb8858b10fd7f05d90c8f8e10ff
|
File details
Details for the file canvas_sync_py-0.1.0-py3-none-any.whl.
File metadata
- Download URL: canvas_sync_py-0.1.0-py3-none-any.whl
- Upload date:
- Size: 45.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
536550689ca222f31f9103bdaf7ecd1db31b2a268ac234fcd453a4e2a5c56bbb
|
|
| MD5 |
ecd1a70719a7dac34fd23a1b3af725a5
|
|
| BLAKE2b-256 |
e0b0d105ee513634641a41f818295801af52fbb0124ff7b0acd2d49c1cf462f5
|