This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Personal portfolio/blog site at tbd.codes, hosted on GitHub Pages. Pure static site — vanilla HTML, CSS, and JavaScript with no build system or frameworks.
Regenerate blog post index (run after adding/editing markdown posts):
python scripts/generate_posts_index.pyGenerate location coordinates for travel map:
python scripts/generate_locations.pyConvert Google Takeout location history to timeline:
python scripts/takeout_to_timeline.pyPython dependency:
pip install pyyamlThere is no dev server, linter, or test suite. Open HTML files directly in a browser or use any static file server (e.g., python -m http.server).
- Blog posts: Markdown files with YAML frontmatter in
posts/→generate_posts_index.py→posts/index.json→blog.jsrenders them client-side viamarked - Travel map locations (priority order):
posts/locations.json— manual overrides keyed by post filenameposts/timeline.json— auto-generated from Google Takeout, matched by post datejs/travel-data.js— hardcoded fallback place-to-coordinate mapping
- Projects:
projects/index.json→projects.js
Header and footer are dynamically injected at runtime by js/include-components.js, which fetches components/header.html and components/footer.html and replaces placeholder elements.
Each page (blog.html, travel.html, projects.html, index.html) is self-contained HTML that loads its own JS module from js/. There is no routing framework.
posts/index.json— auto-generated; do not edit manuallyposts/locations.json— manually maintained post-to-coordinate mapposts/timeline.json— auto-generated from Google Takeout via GitHub Actionsite.json— sets which page is treated as the main/home page
sync-posts.yaml— daily: syncs markdown from private vault repo (TomerBenda/tbdocs), then regeneratesposts/index.jsontimeline-from-takeout.yaml— daily: runstakeout_to_timeline.pyto updateposts/timeline.json
Dark terminal/CRT aesthetic with accent color #39ff14 (neon green). CRT screen effect is toggled via a cookie. CSS is split into css/style.css (global), css/travel.css, and css/comment-widget-dark.css.
Powered by Google Forms and Sheets API — see js/comment-widget.js. Not a traditional backend.