site/CLAUDE.md
g_it 49a4500bb7
Some checks failed
lint / runner / vale (push) Has been cancelled
Lint / MegaLinter (push) Has been cancelled
.
2026-04-02 00:02:27 +02:00

2.2 KiB

Site

Personal portfolio website at gugulet.hu. Three sections: Words, Visuals, Technical.

Architecture

content/              Source content (Markdown, assets, templates)
  assets/css/         Per-page stylesheets
  assets/js/          JavaScript (GSAP animations, loader, protection)
  assets/fonts/       Custom fonts (ttf)
  assets/media/       Images, favicons
  overrides/          Jinja2 templates (extends Zensical theme)
  index.md            Homepage
  resume.md           Resume page
deploy/               Generated static site (build output)
zensical.toml         Build config (site metadata, extensions, theme)
minify.py             Post-build CSS/JS/HTML minification
Dockerfile            Multi-stage build (Zensical builder + Caddy server)

Build and serve

# Development
source .venv/bin/activate
zensical serve --watch

# Production build
zensical build
rm ./deploy/sitemap.xml
python minify.py

# Docker
docker build -t site:latest .
docker run -p 80:80 site:latest

Key conventions

  • Zensical (MkDocs-based) static site generator with zensical.toml as single config source.
  • Markdown + YAML frontmatter for all content. Each page declares its template, extra_css, and extra_js.
  • Jinja2 templates in content/overrides/ extend the Zensical base theme.
  • GSAP + ScrollTrigger for homepage scroll animations. No other JS frameworks.
  • Per-section typography: serif (Words), monospace (Technical), display (Visuals).
  • CSS custom properties for theming. Responsive sizing via clamp() and viewport units.
  • Post-build minification via minify.py (terser for JS, clean-css for CSS, inline for HTML). Preserves <pre>/<code> blocks.
  • No database. Fully static output served by Caddy.
  • Content protection: protect.js prevents right-click and copying.
  • Anti-AI crawling: meta robots tag with noai, noimageai.

CI/CD

GitHub Actions runs Vale prose linting and MegaLinter on push/PR to main. Fail on errors.

Dependencies

pip install -r requirements.txt   # Python (Zensical, Jinja2, pymdown-extensions)
npm install -g terser clean-css-cli  # Node (minification)