The Software and Systems Laboratory (SSL) website is built with Sphinx and deployed to GitHub Pages.
- Active documentation website project using Sphinx +
uv - CI deploys the site from
mainusing.github/workflows/build.yml - Build validation is in place; dedicated Python lint/unit-test tooling is not yet configured in this repository
src/: Sphinx source files (.rst,conf.py, static assets)src/_static/: CSS and reusable profile fragments used by includessrc/publications/: publication/blog post pagesbuild/: generated site output (artifact/output directory).github/workflows/build.yml: CI build and deploy workflow
- Python
3.14(project target) uvmake(optional convenience commands)
uv sync
make build-projOpen build/index.html after a successful build.
Build docs:
make build-projEquivalent direct command:
uv run sphinx-build -vvv --write-all --fresh-env src buildLive preview during edits:
make serveEquivalent direct command:
uv run sphinx-autobuild src buildRun strict docs validation (warnings as errors):
uv run sphinx-build -n -W --keep-going --write-all src buildNote: this repository currently uses Sphinx build checks as the primary quality gate.
Run link validation when URLs are added or changed:
uv run sphinx-build -b linkcheck src build/linkcheck- Review contribution policy in
.github/CONTRIBUTING.md. - Create a feature branch from
main. - Make focused changes in
src/(andsrc/_static/when needed). - Run the validation commands above.
- Open a PR with a concise rationale and verification notes.
- Identify which group card to update in
src/members.rst. - Add or update the corresponding profile snippet in the correct file under
src/_static/(for examplefaculty_advisors.rst,phd_students.rst,masters_students.rst,undergraduate_students.rst,collaborators.rst,alumni.rst). - Follow the existing marker pattern exactly:
- Start each snippet block with
.. Full Name - Keep the trailing
..sentinel structure intact
- Start each snippet block with
- If adding a new person card, add a matching
.. grid-item-card::entry insrc/members.rstwith the proper.. include::slice. - Build locally (
make build-proj) and verify the member appears correctly. - Run strict validation before opening the PR.
- Create a new
.rstfile undersrc/publications/. - Use existing publication pages as templates for structure.
- Ensure metadata/content is compatible with the
.. postlist::block insrc/publications/index.rst. - Build locally and verify the post appears on the publications page.
- Run strict validation and linkcheck if external links were added.
- Edit
src/projects.rst. - Keep headings and directive style consistent with surrounding content.
- Build and verify page rendering.
- Run strict validation before submitting the PR.
- Edit
src/_static/custom.css. - Prefer scoped style changes over broad global overrides.
- Verify desktop and mobile rendering.
- Rebuild and confirm no regressions in core pages.
- Preserve heading hierarchy and adornment style within each
.rstfile. - Reuse existing directives and patterns (
grid,include, admonitions). - Keep include slices exact (
:start-after:/:end-before:) to avoid broken member cards. - Keep prose concise and avoid redundant sections.
This project supports two release tracks.
- Merge the approved PR to
main. - GitHub Actions builds and deploys the site via
.github/workflows/build.yml. - Confirm the production site reflects the new content at https://ssl.cs.luc.edu.
- Ensure the desired changes are merged to
main. - Create and push a semantic version tag, e.g.
v1.2.3. - Create a GitHub Release for that tag.
- Draft release notes from merged PRs and resolved issues since the previous tag.
- Contribution process:
.github/CONTRIBUTING.md
- Agent-specific repository rules are documented in
AGENTS.md. - Recommended model: GPT-5.3-Codex in GitHub Copilot.