Course site for CMSC398W, built with Astro and Starlight. Deployed at https://cmsc398w.github.io/course_docs/.
Prerequisites:
- Node.js 22+
- Emacs (for building slides from
.orgsources) - TeX Live with XeLaTeX (
texlive-xetex,texlive-latex-extra,texlive-latex-recommended,texlive-fonts-recommended,texlive-extra-utils) - BeamerReveal Perl module (
cpanm BeamerReveal) poppler-utilsandffmpeg(used by BeamerReveal for PDF/video processing)
Install Node dependencies:
npm installBuild slides (generates HTML/PDF from .org sources):
bash scripts/build-slides.shRun dev server:
npm run devBuild for production:
npm run build
npm run previewslides/ # Org-mode Beamer slide sources + images
scripts/ # build-slides.sh, export-slides.el, beamer-reveal.sty
src/
content/docs/ # Starlight markdown/MDX pages
components/ # Astro components (e.g. SlideEmbed)
public/ # Static assets; slides are built into public/slides/
Pushes to main trigger the GitHub Actions workflow (.github/workflows/deploy.yml), which:
- Installs Emacs, TeX Live, BeamerReveal, and supporting tools
- Compiles org-mode slides to PDF and reveal.js HTML via
build-slides.sh - Builds the Astro site with
npm run build - Deploys to GitHub Pages