# Site       This repo contains the files for maintaining my personal website: [gugulet.hu](https://gugulet.hu) and is built using the [Zensical static site generator](https://zensical.org/). ## Setup steps 1. Clone the repo and enter the directory: `git clone git:git.gugulet.hu/g_it/site.g_it; cd site` 2. Setup the virtual environment: `python3 -m venv .venv` 3. Activate the virtual environment: `source .venv/bin/activate` 4. Install all the packages: `pip install -r requirements.txt` 5. Activate direnv: `direnv allow` ## Architecture ```text 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 ```bash # 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 `
`/`` 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
```bash
pip install -r requirements.txt # Python (Zensical, Jinja2, pymdown-extensions)
npm install -g terser clean-css-cli # Node (minification)
```