Course website for ASTR 101 (Spring 2026) at San Diego State University.
Instructor: Dr. Anna Rosen Live Site: astrobytes-edu.github.io/astr101-sp26
# Preview with live reload
quarto preview
# Build the site
quarto render
# Build instructor version (includes answer keys)
quarto render --profile instructorRequires Quarto v1.4+.
astr101-sp26/
├── _quarto.yml # Main config + course params
├── _extensions/course/ # Custom Lua shortcodes
├── _includes/ # Reusable content blocks
├── assets/
│ ├── figures.yml # Central figure registry
│ ├── images/ # All images by module
│ ├── slides/ # RevealJS theme
│ └── theme/ # Site SCSS
├── course-info/ # Syllabus, schedule, policies
├── modules/
│ ├── module-01/ # Foundations
│ ├── module-02/ # Inferring Star Properties
│ ├── module-03/ # Stellar Structure & Evolution
│ └── module-04/ # Galaxies & Cosmology
├── handouts/ # Reference sheets
├── homework/ # Assignments
└── exams/ # Exams
Each module follows this structure:
modules/module-NN/
├── index.qmd # Module hub page
├── _prep/ # Instructor-only (not published)
│ └── lecture-NN-*.md
├── slides/
│ ├── _metadata.yml # Shared RevealJS config
│ └── lecture-NN-*.qmd
└── readings/
└── lecture-NN-*.qmd
All figures are registered in assets/figures.yml:
figures:
hr-diagram:
path: /assets/images/common/hr-diagram.png
caption: "Hertzsprung-Russell diagram"
alt: "Plot showing stellar luminosity vs temperature"
credit: "ESA"Use in content with shortcodes:
{{< fig hr-diagram >}} # Figure with caption
{{< img hr-diagram >}} # Image only (for slides)| Shortcode | Output |
|---|---|
{{< fig id >}} |
Figure with caption from registry |
{{< img id >}} |
Image only (no caption) |
{{< due "2026-02-15" >}} |
Formatted due date |
{{< points 10 >}} |
Point value badge |
{{< reading "Ch 3" "pp. 45" >}} |
Reading reference |
{{< meta params.instructor >}} |
Course metadata |
Single source of truth in _quarto.yml:
params:
course-code: "ASTR 101"
instructor: "Dr. Anna Rosen"
semester: "Spring 2026"
# ... more paramsAccess anywhere with {{< meta params.X >}}.
Conditional content using Quarto profiles:
quarto render # Student view (default)
quarto render --profile instructor # Includes answer keysCopy templates to create new lectures quickly:
# Create new slides
cp assets/templates/slides-template.qmd modules/module-02/slides/lecture-03-topic.qmd
# Create new reading
cp assets/templates/reading-template.qmd modules/module-02/readings/lecture-03-topic.qmdThen find/replace all [BRACKETED] placeholders with actual content.
| Template | Includes |
|---|---|
slides-template.qmd |
RevealJS config, extensions (pointer, spotlight, quiz, roughnotation), placeholder sections |
reading-template.qmd |
Metadata, "Check Yourself" questions, collapsible solutions, reference tables |
- Create slides from template at
modules/module-NN/slides/lecture-NN-topic.qmd - Register figures in
assets/figures.ymlbefore using{{< fig >}} - Preview with
quarto preview - Verify with
quarto render(check for warnings)
Keep ISO format in frontmatter (date: "2026-01-22").
Renders automatically as "January 22, 2026".
Always use CGS units (cm, g, s, erg) for physics content. Solar units (M☉, R☉, L☉) for stellar quantities. Never SI units (meters, kg, Joules).
GitHub Actions workflow (.github/workflows/ci.yml):
- Renders HTML on push/PR to main
- Validates links and images weekly
- Uses proof-html for link checking
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
© 2026 Anna Rosen
