Personal site. A single static page. No framework, no build step, no dependencies.
| File | Purpose |
|---|---|
index.html |
The English page, including JSON-LD structured data |
es/index.html |
The Spanish page |
styles.css |
All styling |
llms.txt |
Plain-text summary for AI assistants |
robots.txt, sitemap.xml |
Search engine basics |
CNAME |
Custom domain for GitHub Pages |
img/fav.ico |
Favicon |
img/og.png |
Social preview image (1200x630) |
Edit index.html and push to main. That's it.
Copy changes need to be made in both index.html and es/index.html, which are
independent files with no shared templating. The hreflang links in both heads and
the entries in sitemap.xml must keep pointing at each other, otherwise search
engines will treat the two pages as duplicates rather than translations.
When copy changes, keep llms.txt and the JSON-LD block in index.html in sync,
they describe the same thing to machines.
python3 -m http.server 8000Then open http://localhost:8000.
Pushing to main triggers .github/workflows/deploy.yml, which copies the public
files into _site/ and uploads that to GitHub Pages. Adding a new public file means
adding it to the Stage site step, otherwise it will not be deployed. The custom
domain is configured in the repository's Pages settings and pinned by CNAME.