Terminal / cyberpunk personal portfolio, built with Eleventy.
Neon purple primary, electric-blue accent. Dark / medium / light themes (persisted),
typed hero tagline, hover-reveal project cards, and an interactive shell with a
mail command that composes an email to you.
npm install
npm run dev # local dev server with live reload → http://localhost:8080
npm run build # production build → ./_siteNo template surgery needed for routine changes:
| File | What it controls |
|---|---|
site.json |
handle, name, email (used by the mail command), location, hex signature, GitHub id, default theme, taglines, bio, and the support / buy-me-a-coffee block |
social.json |
the social link cards (service, url, handle, icon). icon is one of github, mastodon, forge, pin |
projects.json |
the project cards (name, lang, hex codes, description, tags, meta, url) |
stack.json |
the stack chips (plain array of strings) |
neofetch.json |
the neofetch ASCII art (art: array of lines — swap in your own skull) and the net: line |
- Change the contact email:
site.json→email. It feeds both the shellmailcommand and themailto:link, and is injected into the page as JSON for the client script. - Change the coffee link / hide the section:
site.json→support.url, or setsupport.enabledtofalse. - Default theme:
site.json→defaultTheme(dark|medium|light). Visitors' choices override this vialocalStorage. - Add a project: append an object to
projects.json. Pick two hex codes —hexShortshows in the card's title bar,hexFullis revealed on hover. - Swap the neofetch skull: edit
neofetch.json→art(one string per line). The info column (host / net / stack / id) re-aligns automatically to whatever art you paste in. - Add a social icon: add a
<svg>branch to theicon()macro insrc/_includes/icons.njk, then reference its name insocial.json.
eleventy.config.js Eleventy config (input: src, output: _site)
src/
index.njk the page (loops over _data)
_data/ site.json, social.json, projects.json, stack.json, neofetch.json
_includes/
base.njk <head>, fonts, no-flash theme restore, script include
icons.njk inline SVG icon macro
assets/
style.css themes + components + responsive (all here, no build step)
app.js theme cycle, hero typing, tagline switcher, shell + mail
skull.png hero mascot
The build output is plain static HTML/CSS/JS in _site/ — host it anywhere.
- Netlify: connect the repo;
netlify.tomlis already set (npm run build→ publish_site). - Cloudflare Pages / Vercel: build command
npm run build, output directory_site. - GitHub Pages: run
npm run buildand publish_site/(e.g. via an action).
Point your 0xded.dev DNS at the host and you're live.
- Fonts load from Google Fonts (JetBrains Mono). To self-host, drop the woff2 files in
src/assets/and swap the<link>inbase.njkfor an@font-faceblock instyle.css. - No client framework, no CSS build step — just Eleventy turning data + templates into static files.