- HTML 43.8%
- CSS 27.3%
- Rust 17.2%
- JavaScript 11.7%
- Consolidate About and resume content with two PDF downloads - Refresh homepage and fix dark-mode navigation - Add static deployment and resume export tooling - Clean up legacy files and documentation - Fix responsive 404 layout |
||
|---|---|---|
| .github/ISSUE_TEMPLATE | ||
| assets | ||
| fonts | ||
| tools | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .node-version | ||
| 404.html | ||
| _headers | ||
| _redirects | ||
| about.html | ||
| favicon.ico | ||
| index.html | ||
| LICENSE | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| resume.css | ||
| resume.js | ||
| robots.txt | ||
| style.css | ||
| theme.js | ||
| wrangler.jsonc | ||
aalhendi.com
Personal website built with plain HTML, CSS and JavaScript.
Local development
Use the Node.js version in .node-version.
npm ci
npm run preview
npm run check validates local asset references and runs a deployment dry-run.
Content
index.html: homepage introduction.about.html: experience, selected work and resume downloads.style.css,resume.css,theme.js,resume.js: presentation and behaviour.assets/andfonts/: published images, PDFs and fonts.tools/: site packaging and PDF generation.
Resume PDFs
about.html is the shared source for the website and both PDF editions.
Edit it, then regenerate the PDFs using Rust and an installed Chromium-based browser:
cargo run --quiet --manifest-path tools/resume-export/Cargo.toml -- all
The exporter produces a two-page resume and one-page highlights document in
assets/. Check the page counts, selectable text and visual layout before publishing.
Set RESUME_BROWSER to select a browser executable when needed.
Deployment
The site uses Cloudflare Workers Static Assets.
npm run cf:login
npm run check
npm run deploy
tools/build-site.mjs copies an explicit public asset list into dist/.
Deployment publishes the current local files; it does not require a Git commit.
Build output, temporary files and local credentials are excluded from Git.