varmara.github.io
Personal website for Marina Varfolomeeva, built with Quarto. Deployed to GitHub Pages from the docs/ output directory.
Build & preview
Python posts use the local .venv/. Activate it before rendering if needed:
execute: freeze: auto is set globally — code chunks only re-execute when source changes. Frozen outputs live in _freeze/.
Project structure
_quarto.yml # site config: output-dir, navbar, theme, freeze
_brand.yml # color palette (teal) and typography (Inter)
assets/styles.css # custom CSS overrides
index.qmd # About me / homepage (solana template)
publications.qmd # publications listing from data/
teaching.qmd # teaching listing from data/
blog/
index.qmd # blog listing page (sorted by date desc, with categories)
<date>-<slug>/
index.qmd # one directory per post
data/
publications.yml # publication entries (id, title, author, year, journal, doi, pdf)
courses_grad.yml # graduate courses
courses_undergrad.yml # undergraduate courses
_templates/
publications.ejs # EJS template for publications listing
courses.ejs # EJS template for courses listing
_drafts/ # drafts not yet in blog/ (excluded from render via .quartoignore)
_meta/ # project documentation: DEPLOY.md, STANDALONE_POSTS.md (gitignored)
docs/ # rendered output (gitignored, served by GitHub Pages)
_freeze/ # frozen code execution outputs (committed to git)
Adding a blog post
Use the scaffold script to create a new post:
# draft inside the site (no publish date needed yet)
bash _meta/new-post.sh python my-analysis --draft
bash _meta/new-post.sh r my-analysis --draft
# standalone repo in ~/projects/<slug>/ (default) or a custom directory
bash _meta/new-post.sh python my-analysis
bash _meta/new-post.sh r my-analysis --dir ~/researchFor standalone posts, see _meta/STANDALONE_POSTS.md for the migration workflow.
To add manually, create blog/<YYYY-MM-DD>-<slug>/index.qmd. Required frontmatter:
Add draft: true to hide from the listing while writing (draft-mode: unlinked means it still renders).
R posts
Use {r} code chunks. No special setup needed beyond a working R installation.
Python posts
Use {python} code chunks. Python packages are in .venv/ and listed in requirements.txt. Add new dependencies there and install with pip install -r requirements.txt inside the venv.
Adding a publication
Append an entry to data/publications.yml:
The EJS template renders entries in reverse chronological order and shows DOI/PDF links only when non-empty.
Styling
- Theme:
lightly(Bootstrap) with_brand.ymloverrides - Primary color: teal
#458d8f - Font: Inter (Google Fonts)
- Profile image:
assets/profile.jpg(oval crop via CSS, 200×250px) - Author name hidden in blog listing via
.list .listing-author { display: none }