Skip to main content

Modern Python CLI for automating GitHub Classroom assignment management

Project description

ClassDock

Automate GitHub Classroom assignment management with a modern Python CLI

PyPI version Python Support CI License: MIT

ClassDock is a command-line tool for computer science instructors who manage GitHub Classroom assignments. Instead of manually clicking through dozens of student repositories, ClassDock automates the repetitive work — discovering repos, distributing secrets, tracking roster acceptance — so you can focus on teaching.

Perfect for: Instructors managing GitHub Classroom assignments for classes of any size.


Installation

pip install classdock

Requirements: Python 3.10+ and Git


Quick Start

# 1. Set up your GitHub token (one-time)
classdock token

# 2. Create a new assignment
classdock setup

# 3. Discover all student repositories
classdock fetch

# 4. Add secrets to every student repo at once
classdock secrets add

# 5. Run the full workflow end-to-end
classdock run

Shortcut Commands

These shortcuts cover the most common operations without navigating command groups:

Command What it does
classdock run Run the full assignment workflow (assignments orchestrate)
classdock setup Launch the interactive assignment setup wizard
classdock fetch Discover all student repositories from GitHub Classroom
classdock status Show assignment dashboard (repos, roster, token status)
classdock token Configure your GitHub Personal Access Token

Command Groups

For full control, every feature is available through organized command groups:

Group Description
classdock assignments Assignment lifecycle: setup wizard, orchestration, student helpers
classdock repos Repository discovery
classdock secrets Distribute secrets and tokens to all student repos
classdock roster Student roster management with CSV import and assignment tracking
classdock automation Cron scheduling for automated workflow steps
classdock config GitHub token configuration and validation

See the Full Command Reference for every subcommand and option.


Configuration

ClassDock reads an assignment.conf file from your assignment directory:

# Minimal configuration
classroom_url="https://classroom.github.com/classrooms/123/assignments/456"
github_organization="your-github-org"
assignment_name="homework-1"

# Optional: secrets to distribute to every student repo
secrets_list="API_KEY,DATABASE_URL"

# Optional: enable roster sync during orchestration
step_sync_roster=true

Run classdock setup to generate this file interactively.


Roster Management

Track which students accepted an assignment and link their GitHub repos to your class roster:

# Initialize (one-time, stores data in ~/.config/classdock/roster.db)
classdock roster init

# Import your student list from a Google Forms CSV export
classdock roster import students.csv --org=cs101-fall2025

# After fetching repos, link them to roster entries
classdock roster sync --assignment=homework-1 --org=cs101-fall2025

# See who has and hasn't accepted
classdock roster status --org=cs101-fall2025

See Roster Sync Guide for detailed setup.


Documentation

Document Description
Full Command Reference Every command, subcommand, and option
Roster Sync Guide Roster management and orchestrator integration
Error Handling GitHub API resilience and retry patterns
CI/CD Workflow Automated testing and PyPI publishing
Contributing Guide Development workflow and guidelines
Changelog Release history

Contributing

Contributions are welcome. Please read the Contributing Guide before opening a pull request.


License

MIT License — see LICENSE for details.


Made with care for computer science educators.

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

classdock-0.4.0.tar.gz (229.0 kB view details)

Uploaded Source

Built Distribution

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

classdock-0.4.0-py3-none-any.whl (282.9 kB view details)

Uploaded Python 3

File details

Details for the file classdock-0.4.0.tar.gz.

File metadata

  • Download URL: classdock-0.4.0.tar.gz
  • Upload date:
  • Size: 229.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for classdock-0.4.0.tar.gz
Algorithm Hash digest
SHA256 c3333c6dada6e36e24c2a42955b446b0885fd5ee745b187a0a76823f8fbbefb2
MD5 be66033de571d3435b938decc348a2ab
BLAKE2b-256 1626be693e787bba7f18f051370345d11f5f97b15b65ee85b492afe955dd719a

See more details on using hashes here.

File details

Details for the file classdock-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: classdock-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 282.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for classdock-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80ca3f7ec6e3c5e67e2f51e8ca9e03b5e6b6c23614e0f8e875136e8772d8609c
MD5 9c6ff6f27c47f341bc1e6e731ffd54c1
BLAKE2b-256 c3acbe0fd049f9792acc2085939c1ef9648adbb595c9e9c7872bef7dcd176af3

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