Repository Guidelines
Project Structure & Module Organization
- Jekyll powers the site. Top-level pages live in
pages/, each with YAML front matter (layout, permalink, navbar_active).
- Blog articles sit under
blog/<Category>/_posts/ using YYYY-MM-DD-title.md; related images belong in assets/img/ or category folders.
_includes/ and _layouts/ host Liquid partials and templates—extend them instead of duplicating HTML.
_data/ supplies JSON/CSV that drives dynamic sections (news, CV, projects). scripts/python/ regenerates Markdown from these data files.
_site/ is generated output; never edit or commit it.
Build, Test, and Development Commands
bundle exec jekyll serve (or make serve) runs the site locally on http://127.0.0.1:4000.
scripts/run wipes _site/ and serves with incremental rebuild + live reload—use during active editing.
bundle exec jekyll build (or make build) compiles the production site; run before committing to catch Liquid errors.
make clean clears _site/ and .jekyll-cache/; make format triggers Prettier across HTML, CSS, JS, JSON, Markdown, and YAML.
Coding Style & Naming Conventions
- Prettier enforces 2-space indentation, semicolons, and a 125-character wrap; always run
make format after large edits.
- Stylelint (Primer + Prettier config) governs CSS/SCSS. Lint styles with
npx stylelint "assets/css/**/*.scss" when touching stylesheets.
- Keep filenames lowercase and hyphenated; co-locate assets with their content. Ensure front matter stays minimal but complete (
layout, title, description, navbar_active).
Testing Guidelines
- There is no automated test suite. Validate changes with
bundle exec jekyll build and scan the output for warnings/errors.
- After running any generator in
scripts/python/, review the diffed Markdown under projects/pages/ (or the relevant folder) before committing.
- Manually spot-check key pages locally—especially navigation, search, and any sections fed from
_data/.
Commit & Pull Request Guidelines
- Follow the existing, concise, imperative commit style (e.g.,
Update intro to drills post). Group related content + asset updates together.
- Pull requests should explain the change, link issues when available, and add screenshots for visual updates.
- Confirm a clean
bundle exec jekyll build run and formatting pass before requesting review.
Configuration & Content Tips
- Site-wide toggles (analytics, pagination, search) live in
_config.yml; document any changes in the PR description.
- Do not commit credentials beyond the public Firebase keys already present. Store sensitive values in private infrastructure instead.