Skip to main content

Synchronize modules, assignments and files from Canvas by Instructure to your local computer

Project description

logo

Canvas-Sync

Ask DeepWiki PyPI License uv Ruff Last Commit
Synchronize Canvas LMS courses and files to a local folder, preserving course structure and organization.

#Canvas   #Instructure   #LMS   #Synchronize   #Education


Table of Contents 📚


Overview 📚

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 include:

  • 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)
  • Rich progress bars and improved sync status output

Quick Start 🚀

Step 1 — Generate a Canvas API token

  • Log in to your Canvas instance → AccountSettingsApproved IntegrationsNew Access Token.
  • Copy the token and keep it secure. You will use it during setup.

Auth Token

Step 2 — Install Canvas-Sync

See the Installation section below for all options.

Step 3 — Launch and configure

Run canvas setup to launch the interactive setup:

  1. Choose a local sync folder
  2. Provide your Canvas domain (without https://, e.g. example.instructure.com)
  3. Enter the API token from Step 1
  4. Select the courses to sync

After setup, run canvas sync to begin downloading course content.


Installation 📦

Pick the method that best fits your workflow:

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

Usage ⚙️

Command Description
canvas --help Launch CLI and show help message
canvas setup Re-run setup and update saved values
canvas info Show current saved settings
canvas sync Start synchronization using saved settings
canvas reset Reset and remove saved encrypted settings (use when you forgot your password)

Security & Privacy 🔒

Features Description
Data stays local and encrypted All settings and your Canvas API token are stored locally on your device using AES encryption with a password-derived key.
Read-only access Canvas-Sync only downloads course content — it never makes changes to your Canvas account.
Revoke access anytime Use canvas setup to update your settings or canvas reset to delete them completely.
Protect your token Never share your Canvas API token. If you believe it's compromised, revoke it in Canvas immediately and run canvas reset.

Links 🔗

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

canvas_sync_py-0.5.0.tar.gz (30.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

canvas_sync_py-0.5.0-py3-none-any.whl (44.9 kB view details)

Uploaded Python 3

File details

Details for the file canvas_sync_py-0.5.0.tar.gz.

File metadata

  • Download URL: canvas_sync_py-0.5.0.tar.gz
  • Upload date:
  • Size: 30.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.10

File hashes

Hashes for canvas_sync_py-0.5.0.tar.gz
Algorithm Hash digest
SHA256 73eb8ce7ee17193450476e2287a1b44611133961322a25400361937101d5f86a
MD5 295995e8172a887fb17d29b672afc005
BLAKE2b-256 4070fe01f6e7464dcb50919ba4cff8237baae3041b87c3f6bd000c5750e20d80

See more details on using hashes here.

File details

Details for the file canvas_sync_py-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for canvas_sync_py-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a037975d74bb7410613faa1eac41f954c9c8ae0cd35dc582c4aa4d461424226
MD5 bd0ee606f37a385c295ec2edc70c7ec0
BLAKE2b-256 7a5e0ca949243cd5d1e7f228782bd1feb6d9d7199968d5511f811679c1d5eff9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page