Skip to main content

Coding-Academy Lecture Manager - A course content processing system

Project description

CLM - Coding-Academy Lecture Manager

CI codecov

Version: 1.8.1 | License: MIT | Python: 3.11, 3.12, 3.13, 3.14

CLM is a course content processing system that converts educational materials (Jupyter notebooks, PlantUML diagrams, Draw.io diagrams) into multiple output formats.

Quick Start

Installation

# Install from PyPI
pip install coding-academy-lecture-manager

# Or with all optional dependencies (workers, TUI, web dashboard)
pip install "coding-academy-lecture-manager[all]"

For development, clone the repository and install in editable mode:

git clone https://github.com/hoelzl/clm.git
cd clm
pip install -e ".[all]"

Basic Usage

# Convert a course
clm build /path/to/course.xml

# Watch for changes and auto-rebuild
clm build /path/to/course.xml --watch

# Show help
clm --help

Features

  • Multiple Output Formats: HTML slides, Jupyter notebooks, extracted code
  • Multi-Language Notebooks: Python, C++, C#, Java, TypeScript, Markdown
  • Diagram Support: PlantUML and Draw.io conversion
  • Multiple Output Targets: Separate student/solution/instructor outputs
  • Shared-Source Includes: Declare <include source="…" as="…"/> on a <topic> or <section> to splice a canonical Python package (or any file/directory) into multiple topics at build time. clm sync-includes materializes the same sources on disk so local notebook execution (VS Code, JupyterLab) finds them, with a .clm-include ledger for safe cleanup.
  • Output-Write Deduplication: When the same file is written to the same output path by multiple producers, CLM deduplicates the write and surfaces a output_dedup_count / output_conflicts summary so you can spot accidental cross-topic collisions.
  • Watch Mode: Auto-rebuild on file changes
  • Incremental Builds: Content-based caching
  • LLM Summaries: Generate course summaries with clm summarize using any OpenAI-compatible LLM API
  • Recording Management: Manage video recording workflows with pluggable backends — local ONNX pipeline, iZotope RX 11 external tool, or Auphonic cloud processing — plus assembly, job tracking, and per-course status (clm recordings)
  • MCP Server: Model Context Protocol server for AI-assisted slide authoring (clm mcp) with 16 tools for course navigation, validation, normalization, and bilingual editing
  • Slide Authoring Tools: Split-deck authoring sync (clm slides sync — the funnel that keeps both halves of a .de/.en pair consistent), topic resolution (clm topic resolve), fuzzy search (clm slides search), spec/slide validation (clm validate), normalization (clm slides normalize), bilingual language view (clm slides language-view), voiceover extraction (clm voiceover extract), LLM-driven voiceover coverage check (clm slides coverage), bilingual ↔ per-language file conversion (clm slides split / clm slides unify), and structured JSON outlines (clm outline --format json). Lower-level plumbing (clm slides assign-ids, clm slides suggest-sync) stays available by name for scripts and agents.
  • Voiceover Sync: Synchronize video recordings with slides to auto-generate speaker notes (clm voiceover sync), with multi-file input for part-based recordings and intelligent merge mode that preserves existing content while integrating transcript additions and filtering recording noise
  • LLM Polish: Clean up speaker notes with LLM-powered text polishing (clm polish)
  • Git Integration: Manage output repos with clm git init/sync/status, including --amend and --force-with-lease for iterative workflows
  • Flexible Remote URLs: Configurable git remote URL templates for SSH, custom hosts, etc.

Documentation

For Users:

For Developers:

Development Setup

# Install pre-commit hooks (recommended)
uv run pre-commit install

# This enables automatic linting (ruff) and type checking (mypy) on every commit

Testing

# Run unit tests
pytest

# Run all tests (unit, integration, e2e)
pytest -m ""

# Run with coverage
pytest --cov=src/clm

License

MIT License - see LICENSE for details.

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

coding_academy_lecture_manager-1.8.1.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file coding_academy_lecture_manager-1.8.1.tar.gz.

File metadata

  • Download URL: coding_academy_lecture_manager-1.8.1.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for coding_academy_lecture_manager-1.8.1.tar.gz
Algorithm Hash digest
SHA256 db672831e1c7e1a642d76f11a2cf28afb0db7f5167ef45cf89fa154a54c45c42
MD5 c2bac1bac53c33c85e212815d878f924
BLAKE2b-256 f7a9b6a832c26a21d8fc08a4632e603c168f04ae297aa47ccb3d40aa54d8c8be

See more details on using hashes here.

File details

Details for the file coding_academy_lecture_manager-1.8.1-py3-none-any.whl.

File metadata

  • Download URL: coding_academy_lecture_manager-1.8.1-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for coding_academy_lecture_manager-1.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6fe9e1b981a435b3c4dc11fae2d89f9cc41dafc49f87a5937ebf55d6638923b0
MD5 dec76cf0cc150f3aef928510e4feb70d
BLAKE2b-256 c483586bec1b57d0c7ccb45f8c499cb08b0b54b6d47a8fba69f524f10c325bd8

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