Nicholas M. Synovic's 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 - Validation is centered on pre-commit checks and Sphinx build verification
src/: Sphinx source files (.rst,conf.py, static assets)src/_static/: custom CSS, images, and document assetssrc/blog_posts/: blog post pagessrc/papers/: publication pagesbuild/: generated site output (artifact/output directory).github/workflows/build.yml: CI build and deploy workflow
- Python
3.13(project target) uvmake(optional convenience commands)
uv sync
make buildOpen build/index.html after a successful build.
Build docs:
make buildEquivalent 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 formatting/lint checks:
pre-commit run --all-filesRun build validation:
make build- 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.
- Create or update a
.rstfile insrc/blog_posts/. - Follow existing blog post structure and metadata patterns.
- Ensure the post is listed from
src/blog_posts/index.rstas expected. - Build locally (
make build) and verify rendering. - Run
pre-commit run --all-filesbefore opening the PR.
- Create or update a
.rstfile insrc/papers/. - Follow existing paper page structure and citation conventions.
- Ensure the page is discoverable from
src/papers/index.rst. - Build locally and verify the page renders correctly.
- Run pre-commit checks 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 used by nearby pages.
- Keep prose concise and avoid redundant sections.
- Keep links explicit and confirm they render correctly in the built site.
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://nicholassynovic.github.io/.
- 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
This site uses Google Analytics (GA4) to collect aggregate usage insights.
- Measurement ID:
G-0Y7Y4XLQHD - Script source:
https://www.googletagmanager.com/gtag/js?id=G-0Y7Y4XLQHD
- Analytics is loaded by default on page load.
- Page usage is measured via the GA4 tag.
- You can block analytics requests using browser privacy controls, script blockers, or network-level filtering.
- You can clear site data and cookies through your browser settings.
- Agent-specific repository rules are documented in
AGENTS.md. - Recommended model: GPT-5.3-Codex in GitHub Copilot.