This is the website for the Computing Education Research Lab at Michigan State University. It is built with Pelican (a Python static site generator) and hosted on GitHub Pages. The Python environment is managed with uv.
Install uv if you don’t have it:
curl -LsSf https://astral.sh/uv/install.sh | shAlternatively, uv can be installed via a package manager (e.g. brew install uv on macOS). See the official installation docs for all options.
Clone the repo and install dependencies:
git clone https://github.com/msu-cerl/msu-cerl.github.io
cd msu-cerl.github.io
uv syncThen start a live-reloading local server:
uv run pelican --listen --autoreloadThe site will be available at http://localhost:8000. Changes to content files are picked up automatically.
To do a one-shot build without serving:
uv run pelican content -s pelicanconf.pyPushing to main triggers an automatic GitHub Pages build and deploy (takes a few minutes).
Create a new Markdown file in content/posts/ with the following metadata at the top:
Title: Post Title Here
Date: 2026-01-15
Author: Firstname Lastname
Slug: short-url-slug
Summary: One or two sentences shown on the news index page.
Full post content starts here...
The post will appear automatically at /news/ in reverse chronological order. The URL will be /news/{year}/{slug}/.
Publications are generated from content/assets/bib/group_publications.bib. After adding new BibTeX entries, regenerate the publications page with:
uv run python bin/create_pubs.pyThen commit the updated content/pages/pubs.md along with your bib changes.
The site deploys automatically via GitHub Actions on every push to main. One-time setup required in the repository settings:
- Go to Settings → Pages
- Under Source, select GitHub Actions (not "Deploy from a branch")
After that, pushing to main triggers the workflow, which builds the Pelican site and deploys the output. You can also trigger a deploy manually from the Actions tab using the "Run workflow" button.
Let me know if you run into issues when working with the website. If you have content you’d like to have featured on the website, but would rather not go down the path of updating the repo yourself, just send that along and I’ll get it up there.