From cfb6c0668d8303982779b4a2687031eafccb90df Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Fri, 8 May 2026 18:47:08 +0200 Subject: Add Blog link to nav and fix Hugo deprecation warnings - Add external Blog menu entry (danix.xyz) via Hugo menus system - Wire nav.html to render Site.Menus.main with external link support - Replace deprecated languageName with label in hugo.toml - Replace deprecated .Language.LanguageName with .Language.Label in nav.html - Add CLAUDE.md with project guidance Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 35 ++++++++++++++++++++++++++++++++ hugo.toml | 11 ++++++++-- themes/danixme/layouts/partials/nav.html | 7 +++++-- 3 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..425894d --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,35 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Commands + +```bash +# Dev server (live reload) +hugo server + +# Production build (output to public/) +hugo build + +# Restore PHP contact form deps (after fresh clone) +cd static/api && composer install +``` + +## Architecture + +Single-page bilingual portfolio site (EN/IT). Hugo ≥ 0.120.0 required. + +**Data-driven content:** All section content lives in `data/*.yaml` (projects, skills, services, education, certs, contact). Templates in `themes/danixme/layouts/partials/` render these via Hugo's `.Site.Data`. To update site content, edit YAML — not templates. + +**Theme:** Custom `themes/danixme/` — no external theme dependency. +- `assets/css/main.css` — ~1763 lines. CSS vars: `--accent` (#a855f7 purple), `--accent2` (#00ff88 neon). Dark mode base; light mode overrides via `.light` class on ``. +- `assets/js/main.js` — contact form AJAX, hero typing effect, dark/light toggle, carousel. +- `layouts/partials/` — one partial per section (hero, about, skills, projects, certs, contact, etc.) + +**i18n:** Translation keys in `themes/danixme/i18n/en.toml` and `it.toml`. Use `i18n "key"` in templates; never hardcode visible text. + +**Languages:** Configured in `hugo.toml`. Each language has its own `contentDir` (`content/en/`, `content/it/`) and CV path param. The `_index.md` files hold only frontmatter metadata — sections render from YAML data. + +**Contact backend:** `static/api/contact.php` uses PHPMailer. Credentials are in `mail-config.php` (gitignored). The PHP file is deployed as-is under `/api/` on the server. + +**Static assets:** `static/img/` for images, `static/files/` for downloadable CVs (referenced in `hugo.toml` params per language). diff --git a/hugo.toml b/hugo.toml index 773b000..7c019d1 100644 --- a/hugo.toml +++ b/hugo.toml @@ -20,9 +20,16 @@ defaultContentLanguageInSubdir = false description = "Cybersecurity Specialist and eJPT-certified Penetration Tester helping companies secure networks, apps, and systems." og_image = "/img/og-cover.jpg" # 1200×630 social sharing image — create this file +[[menus.main]] + name = "Blog" + url = "https://danix.xyz" + weight = 80 + [menus.main.params] + external = true + [languages] [languages.en] - languageName = "EN" + label = "EN" weight = 1 contentDir = "content/en" title = "Danilo Macrì — Cybersecurity Specialist" @@ -31,7 +38,7 @@ defaultContentLanguageInSubdir = false cv = "/files/Danilo Macri - EN.pdf" og_locale = "en_GB" [languages.it] - languageName = "IT" + label = "IT" weight = 2 contentDir = "content/it" title = "Danilo Macrì — Specialista in Cybersecurity" diff --git a/themes/danixme/layouts/partials/nav.html b/themes/danixme/layouts/partials/nav.html index 8a045d0..deddaa3 100644 --- a/themes/danixme/layouts/partials/nav.html +++ b/themes/danixme/layouts/partials/nav.html @@ -15,6 +15,9 @@
  • {{ i18n "nav_certs" }}
  • {{ i18n "nav_projects" }}
  • {{ i18n "nav_contact" }}
  • + {{- range .Site.Menus.main }} +
  • {{ .Name }}
  • + {{- end }}