A tool for creating and managing Canvas announcements with file attachments and quiz question integration.
- Create Canvas announcements with file attachments
- Automatically include information about upcoming assignments
- Option to include a random question from upcoming quizzes
- Web interface for easy announcement creation
- Command-line interface for scripting and automation
- Easy configuration management
- Timezone-aware date handling
This was developed and tested ONLY on a Mac. It may work on other platforms, but it is not tested or guaranteed.
Linux/macOS:
git clone https://github.com/yourusername/canannounce.git
cd canannounce
chmod +x scripts/install.sh
./scripts/install.shWindows:
git clone https://github.com/yourusername/canannounce.git
cd canannounce
scripts\install.bat# Clone the repository
git clone https://github.com/yourusername/canannounce.git
cd canannounce
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # Linux/macOS
# OR
venv\Scripts\activate.bat # Windows
# Install
pip install -e .Web Interface Only (Default):
pip install canannounceWith Optional GUI Support:
pip install canannounce[gui]All Features (GUI + Development Tools):
pip install canannounce[gui,dev]After installation, run the configuration wizard:
canannounce-setupThis will create a configuration file in your user directory:
- Linux:
~/.config/canannounce/local_settings.py - macOS:
~/Library/Application Support/canannounce/local_settings.py - Windows:
%APPDATA%\Local\canannounce\local_settings.py
You'll need:
- Canvas Base URL (e.g.,
https://your-school.instructure.com) - Canvas API Token (generate from Canvas Account → Settings → New Access Token)
- TinyMCE API Key (optional, for rich text editing - get free key from tiny.cloud)
canannounceThen open your browser to http://localhost:5000
canannounce-web # Alternative web interface command~/.config/canannounce/ # User config directory
├── local_settings.py # Main configuration
├── user_settings.json # UI preferences (auto-generated)
└── README.txt # Quick reference
Edit your local_settings.py file:
# Canvas Configuration
canvas_base_url = "https://your-school.instructure.com"
canvas_token = "your_api_token_here"
# TinyMCE Configuration (optional)
TINYMCE_API_KEY = "your_tinymce_key"
# Assignment Settings
UPCOMING_ASSIGNMENT_DAYS = 30
# Quiz Settings
INCLUDE_QUIZ_QUESTION = True
QUIZ_QUESTION_PROMPT = "Practice Question"
# Announcement Settings
ANNOUNCEMENT_NOW = False# Install development dependencies
pip install -e .[dev]
# Run tests
pytest
# Build distribution packages
chmod +x scripts/build_dist.sh
./scripts/build_dist.shsrc/canannounce/
├── config/ # Configuration management
├── core/ # Core Canvas API utilities
├── utils/ # Helper utilities
└── web/ # Web interface
├── templates/ # HTML templates
└── static/ # CSS/JS assets
If you get configuration errors:
canannounce-setup # Re-run setup wizardMake sure your Canvas API token has the required permissions:
- Read course content
- Create announcements
- Upload files
The app automatically converts Canvas UTC timestamps to your local timezone. If dates appear incorrect, check your system timezone settings.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Config Location: Run
canannounce-setupto see your config directory
MIT License - see LICENSE file for details.