- JavaScript 44.7%
- HTML 43.4%
- CSS 10.5%
- Shell 1.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .github/workflows | ||
| assets | ||
| css | ||
| js | ||
| tests | ||
| tools | ||
| .editorconfig | ||
| .gitignore | ||
| .stylelintrc.json | ||
| 404.html | ||
| AGENTS.md | ||
| CHANGELOG.md | ||
| eslint.config.mjs | ||
| imprint.html | ||
| index.html | ||
| LICENSE.md | ||
| lighthouserc.json | ||
| lukasmu.pub | ||
| NOTICE.md | ||
| pa11yci.json | ||
| package-lock.json | ||
| package.json | ||
| playwright.config.js | ||
| privacy.html | ||
| README.md | ||
| robots.txt | ||
| sitemap.xml | ||
lukasmu.com
Personal website of Lukas Müller, available at lukasmu.com.
Plain HTML, CSS, and a little JavaScript. No framework and no build step for
the pages; Node is only used for linting and tests. The home page is one
screen: a mountain photo and a working terminal (try help). Everything is
available in English, German, and Dutch.
Structure
index.html home page: photo, terminal, contact icons
imprint.html imprint and accessibility statement (DE binding, EN/NL)
privacy.html privacy policy (DE binding, EN/NL)
404.html not-found page; also redirects old /de/, /nl/, /en/ URLs
lukasmu.pub public SSH key
css/style.css the only stylesheet; design tokens at the top
js/i18n.js interface strings in EN/DE/NL
js/main.js language switching, terminal, easter egg
assets/ fonts, images, favicon (assets/images/_originals is not deployed)
tests/ Playwright tests, contrast test, link checker
tools/ build, local server, image and icon helpers
Local preview
npm ci
npm run build
npm run serve
Then open http://127.0.0.1:4173. The local server behaves like GitHub
Pages (/imprint finds imprint.html, unknown paths get 404.html).
Checks
The same commands run in GitHub Actions:
npx playwright install chromium
npm run check
npm run check runs lint (HTML, CSS, JS), the build, pa11y (WCAG 2 AA),
the Playwright tests, the link checker, and Lighthouse. Locally, Lighthouse
needs a Chrome binary. If none is installed, point it at Playwright's:
export CHROME_PATH=$(node -e "console.log(require('@playwright/test').chromium.executablePath())")
Assets
- Photo derivatives and the share image:
bash tools/optimize-images.sh(needs ffmpeg with libwebp). - iOS home-screen icon from the favicon:
node tools/render-icons.mjs.
Deployment
GitHub Pages deploys the filtered _site/ folder that tools/build.sh
creates. One workflow checks pull requests and deploys successful main
builds. In the repository settings, set Pages → Source to GitHub
Actions and add lukasmu.com as the custom domain. Point the domain's DNS
directly at GitHub Pages; the privacy policy names GitHub as the only host.
See AGENTS.md for the conventions behind the design, the terminal, localization, and the legal pages.
Tips & tricks
- Very important tip: Add lots of easter eggs!
- There is one already, with a bonus challenge.
helpand the browser console give hints.
Security
If you discover a security vulnerability, please send an e-mail to [email protected].
License
Source code: MIT, see LICENSE.md. Texts, photographs, and the favicon: all rights reserved, see NOTICE.md.