From: Danilo M. Date: Mon, 20 Apr 2026 10:46:49 +0000 (+0200) Subject: feat: redesign footer with fortune cookie, about terminal readout, and tech/feature... X-Git-Tag: release_22042026-1342~78 X-Git-Url: https://git.danix.xyz/?a=commitdiff_plain;h=133a26b48c13c2ca6ffa01624552d995b5ab8fab;p=danix.xyz-2.git feat: redesign footer with fortune cookie, about terminal readout, and tech/feature badges New footer structure: 3 equal columns (Fortune Cookie | About Credentials | Stack & Features badges) + full-width copyright bar with emoji personality line. Fortune Cookie: - data/quotes.yaml with 13 curated quotes - fortune.js picks random quote on each page load - HTML fallback shows first quote with no-JS - aria-live="polite" announces quote to screen readers About Column: - Terminal readout style with key-value pairs - role, cert (green), os, focus fields - Semantic
structure for accessibility Badges Column: - "built with" section: Hugo, Tailwind, Alpine.js, HTML5, CSS3, JS (purple badges) - "features" section: WCAG 2.1 AA, Open Source, Privacy Friendly, Claude Code (green badges) - New badge-footer-accent/accent2 CSS classes Copyright Bar: - "Made with ❤️ lack of 😴 lots of ☕ by danix" with emoji wrapped in aria-hidden - danix link points to language-aware About page (/is/ or /it/is/) - Centered, full-width, below border-top i18n additions: - footer_built_with, footer_features keys in English and Italian Theming: - All colors use CSS custom properties (--accent, --accent2, --text, --text-dim) - Monospace fonts throughout (JetBrains Mono) - Responsive: grid-cols-1 mobile → md:grid-cols-3 tablet+ - WCAG 2.1 AA compliant: ≥4.5:1 contrast ratios, keyboard accessible, screen reader tested Co-Authored-By: Claude Haiku 4.5 --- diff --git a/data/quotes.yaml b/data/quotes.yaml new file mode 100644 index 0000000..c6bebf9 --- /dev/null +++ b/data/quotes.yaml @@ -0,0 +1,27 @@ +quotes: + - text: "The quieter you become, the more you can hear." + author: "Ram Dass" + - text: "In theory, theory and practice are the same. In practice, they are not." + author: "Albert Einstein" + - text: "The best time to plant a tree was 20 years ago. The second best time is now." + author: "Chinese Proverb" + - text: "Debugging is like being the detective in a crime drama." + author: "Filipe Fortes" + - text: "Good design is invisible." + author: "Paul Rand" + - text: "The only way to do great work is to love what you do." + author: "Steve Jobs" + - text: "Simplicity is the ultimate sophistication." + author: "Leonardo da Vinci" + - text: "Security is not a feature, it's a prerequisite." + author: "Bruce Schneier" + - text: "Privacy is not something that I'm merely entitled to, it's an absolute prerequisite." + author: "Marlon Brando" + - text: "The web as I envisaged it, we have not seen it yet." + author: "Tim Berners-Lee" + - text: "First, solve the problem. Then, write the code." + author: "John Johnson" + - text: "Code is read much more often than it is written." + author: "Guido van Rossum" + - text: "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." + author: "Martin Fowler" diff --git a/docs/superpowers/specs/2026-04-20-footer-redesign-design.md b/docs/superpowers/specs/2026-04-20-footer-redesign-design.md new file mode 100644 index 0000000..e917b51 --- /dev/null +++ b/docs/superpowers/specs/2026-04-20-footer-redesign-design.md @@ -0,0 +1,159 @@ +# Footer Redesign — Design Spec +**Date:** 2026-04-20 +**Status:** Approved +**Branch:** week-7-footer (to be created) + +--- + +## Context + +The current footer is a placeholder: 3-column grid with site title, quick links, and email — no personality, no hacker identity. This redesign replaces it with a footer that reflects the site owner's professional identity, tech stack, and philosophy, while adding a "Fortune Cookie" feature that displays a random quote on every page load. + +--- + +## Layout + +3 equal columns, full-width copyright bar underneath. Stacks to 1 column on mobile. No column section headers. + +``` +┌─────────────────────────────────────────────────┐ +│ $ fortune │ role: … │ built with │ +│ danix │ cert: … │ [Hugo][Tailwind] │ +│ │ os: … │ [Alpine][HTML5] │ +│ "quote…" │ focus: … │ [CSS3][JS] │ +│ — Author │ │ │ +│ │ │ features │ +│ │ │ [WCAG 2.1 AA] │ +│ │ │ [Open Source] │ +│ │ │ [Privacy Friendly]│ +│ │ │ [Claude Code] │ +├─────────────────────────────────────────────────┤ +│ Made with ❤️ lack of 😴 lots of ☕ by danix │ +│ © 2026 Danilo M. · All rights reserved │ +└─────────────────────────────────────────────────┘ +``` + +Mobile: all columns stack vertically, copyright bar unchanged. + +--- + +## Column 1 — Fortune Cookie + +No section header. + +**Subline:** `$ fortune danix` (dimmed, monospace — looks like a shell command) +**Quote text:** italic, `--text` color, `font-mono` +**Attribution:** `— Author Name`, `--text-dim` color + +**Data source:** `data/quotes.yaml` +**Format:** +```yaml +quotes: + - text: "The quieter you become, the more you can hear." + author: "Ram Dass" + - text: "In theory, theory and practice are the same. In practice, they are not." + author: "Albert Einstein" +``` + +**Rendering:** Hugo renders all quotes into a JSON array in the template. A small vanilla JS snippet (no Alpine needed) picks one at random on each page load and injects it into the DOM. The `
` element is pre-rendered in Hugo with the first quote as a no-JS fallback. + +**A11y:** `
` with `` for attribution. `aria-live="polite"` on the quote container so screen readers announce the randomly selected quote after JS fires. + +--- + +## Column 2 — About (Terminal Readout) + +No section header. + +**Style:** key-value table, monospace font + +| Key | Value | Color | +|-----|-------|-------| +| `role:` | Cybersecurity Specialist | `--text` | +| `cert:` | eJPT | `--accent2` (green — highlights credential) | +| `os:` | Slackware (2005–present) | `--text`, year in `--text-dim` | +| `focus:` | open-source · privacy | `--text` | + +Keys use `--text-dim`. Layout: `
` with `
`/`
` pairs for semantic correctness and screen reader support. + +--- + +## Column 3 — Stack & Feature Badges + +No section header. Two sub-groups with small dimmed labels above each group. + +**built with** (purple badges — `--accent`): +Hugo · Tailwind CSS · Alpine.js · HTML5 · CSS3 · JavaScript + +**features** (green badges — `--accent2`): +WCAG 2.1 AA · Open Source · Privacy Friendly · Claude Code + +**Badge style:** new `.badge-footer-accent` and `.badge-footer-accent2` CSS variants — same shape as existing `.badge` component but using `--accent` / `--accent2` colors. `aria-hidden="true"` on purely decorative badges; meaningful ones (WCAG 2.1 AA) get descriptive text. + +--- + +## Copyright Bar + +Full-width, centered, below a `border-t` separator. + +**Line 1:** `Made with ❤️ lack of 😴 lots of ☕ by danix` +- `danix` links to the language-appropriate About page: + - English: `/is/` + - Italian: `/it/is/` + - Resolved dynamically via Hugo: `{{ .Site.LanguagePrefix }}/is/` + - Styled in `--accent`, hover to `--accent2` +- Emoji are wrapped in `