Weekly Dev Chat website — MkDocs Material static site. Read mkdocs.yml and recent posts in docs/posts/ for configuration and conventions.
- Posts are for Tuesdays (the weekly chat day). Use next Tuesday's date unless told otherwise.
- End post body with this paragraph (before the image):
Everyone and anyone is welcome to [join](https://weeklydevchat.com/join/) as long as you are kind, supportive, and respectful of others. Zoom link will be posted at 12pm MDT. - Place images in the same directory as the post's
index.md. Runpython3 scripts/optimize_image.py <image>to convert to WebP and resize for the web. - Use
./create_post.shto scaffold a new post (calculates next Tuesday automatically). - Multiple posts on the same date: If a date folder already has an
index.md, prefix the filename with a number and dash (e.g.,0-index.md). The newest/latest post should use the lowest number so it appears first on the homepage. The originalindex.mdkeeps its name.
- Sponsor data lives in
data/sponsors.yml(loaded via themkdocs-macrosplugin). The file's header comment documents the schema and consent policy. - Sponsor logos go in
docs/assets/sponsors/. Reference them with just the filename in theimage:field. - Optimize logos with
python3 scripts/optimize_image.py <path>before committing. - The page itself is
docs/sponsors/index.md; styles are indocs/stylesheets/sponsors.css.
- Pushing to
maintriggers automatic deployment to production. Do not push without explicit approval. - Do not modify
.github/workflows/ci.ymlunless explicitly asked. - Verify changes build cleanly with
docker compose run --rm app mkdocs servebefore committing.
All Python, mkdocs, and similar commands should run via Docker Compose to ensure consistent Python versions:
docker compose run --rm app <command>
# Examples:
docker compose run --rm app mkdocs serve
docker compose run --rm app mkdocs build
docker compose run --rm app python -m pip list