| Crates.io | coursemap |
| lib.rs | coursemap |
| version | 0.1.5 |
| created_at | 2025-08-09 00:51:58.601148+00 |
| updated_at | 2025-08-10 07:35:12.471822+00 |
| description | A tool to visualize course dependencies from Quarto/Markdown documents |
| homepage | https://github.com/kenjisato/coursemap |
| repository | https://github.com/kenjisato/coursemap |
| max_upload_size | |
| id | 1787462 |
| size | 81,345 |
A tool to visualize course dependencies from Quarto/Markdown documents, available in multiple programming languages.
Course Map analyzes Quarto/Markdown documents with course metadata and generates visual dependency graphs showing the relationships between courses. It's designed to help educators and course designers understand and visualize curriculum structures.
This project provides the same functionality across three programming languages:
cargo install coursemap
coursemap -i ./courses -o course_map.svg
pip install coursemap
import coursemap
# Quick display (like matplotlib.pyplot.show())
coursemap.show("./courses")
# Object-oriented approach (recommended)
cm = coursemap.CourseMap("./courses")
cm.show() # Display inline in Jupyter/Quarto
cm.save("course_map.svg") # Save to file
install.packages("coursemap")
library(coursemap)
# Object-oriented approach (recommended)
cm <- coursemap("./courses")
plot(cm) # Display in RStudio/knitr
write_map(cm, "course_map.svg") # Save to file
Course documents should include frontmatter with course metadata:
---
title: "Introduction to Economics"
course-map:
id: intro
phase: Pre
prerequisites: []
---
# Course Content
Your course content here...
id: Unique identifier for the coursephase: Course phase (Pre, InClass, Post, etc.)prerequisites: List of prerequisite course IDsCreate a coursemap.yml file to customize phases and colors:
root-key: course-map
phase:
Pre:
face: lightblue
InClass:
face: lightgreen
Post:
face: orange
Unknown:
face: lightgray
ignore:
- /index.qmd
- /README.md
# In a .qmd file
```{python}
#| echo: false
import coursemap
# Simple one-liner for Quarto
coursemap.show("../courses")
# Or save and display
cm = coursemap.CourseMap("../courses")
cm.show() # Displays inline in Quarto
# In a .qmd file
```{r}
#| echo: false
library(coursemap)
# Simple display in Quarto
cm <- coursemap("../courses")
plot(cm) # Automatically displays inline in Quarto
coursemap/
├── coursemap-rs/ # 🦀 Rust library + CLI for crates.io
├── coursemap-py/ # 🐍 Python package for PyPI
├── coursemap-r/ # 📊 R package for CRAN (RStudio project)
├── test_docs/ # 📝 Test data
├── .bumpversion.toml # 🔄 Version management
├── CHANGELOG.md # 📋 Change history
├── PUBLISHING.md # 📖 Publishing guide
└── README.md # This file
Each package can be developed independently with its own versioning:
cd coursemap-rs
cargo build
cargo test
# Version management
bump-my-version bump patch # Independent versioning
cd coursemap-py
maturin develop
# Version management
bump-my-version bump minor # Independent versioning
cd coursemap-r
R -e "rextendr::document()"
# Version management
bump-my-version bump patch # Independent versioning
make test # Run all tests (Rust, Python, R)
make test-rust # Run Rust tests only
make test-python # Run Python tests only
make test-r # Run R tests only
cd coursemap-rs && cargo test
cd coursemap-py
uv run maturin develop
uv run --with pytest pytest tests/ -v
cd coursemap-r
Rscript --vanilla -e "testthat::test_dir('tests/testthat')"
Tests run automatically on GitHub Actions for:
This project uses independent versioning for each package:
rs-v0.1.0 → rs-v0.1.1 (patch fixes)py-v0.1.0 → py-v0.2.0 (new features)r-v0.1.0 → r-v0.1.1 (bug fixes)courses/
├── intro.qmd # Prerequisites: none
├── microeconomics.qmd # Prerequisites: [intro]
└── advanced.qmd # Prerequisites: [microeconomics]
courses/
├── intro.qmd # Prerequisites: none
├── micro.qmd # Prerequisites: [intro]
├── macro.qmd # Prerequisites: [intro]
└── advanced.qmd # Prerequisites: [micro, macro]
This project utilized generative AI tools, including Claude and ChatGPT, to assist in code generation, documentation, and testing. These tools were used to enhance productivity and facilitate the development process.
MIT License - see LICENSE for details.