Static GTBR portfolio site.
- HTML (
index.html) - CSS (
base.css) - JavaScript (
main.js)
No framework build step is required for the current web site.
index.html: page structure and section anchorsbase.css: global styling, layout, animations, and component stylesmain.js: interaction logic, animated effects, and data-driven project cards
Project cards are rendered from PROJECTS in main.js, not hardcoded in index.html.
Update these in main.js:
PROJECTS: card content (title, status, summary, objectives, milestones, stack, links)PROJECT_STACK_ICONS: SVG icon map used by stack itemsPROJECT_GITHUB_ICON/PROJECT_LINK_ICON: unified action-card icons for repo and external links
Icon colouring is controlled in base.css via .stack-icon-* classes.
Each project supports:
stage:design,concept,dev,draft,prod,completestack: list of{ label, icon }entries mapped throughPROJECT_STACK_ICONSgithubUrl: repo URL (or empty)projectSite: optional external link object:
projectSite: {
label: "Live Site",
url: "https://example.com"
}The expanded card action row renders unified link cards for GitHub and Website.
Network intensity is tuned from constants at the top of main.js.
NETWORK_BRIGHTNESS: global baseline multiplierNETWORK_LINE_INTENSITY: line/ring brightness onlyNETWORK_NODE_OPACITY: node alpha intensityNETWORK_NODE_VIBRANCY: node colour saturationNETWORK_PULSE_OPACITY: flashes/pulses alpha intensityNETWORK_PULSE_VIBRANCY: flashes/pulses colour saturation
The canvas overlay dimming in base.css is also wired to this system through:
--network-brightness--network-overlay-dim
Open index.html directly in a browser, or serve the folder with any static file server.
Example (PowerShell with Python installed):
python -m http.server 4173Then visit http://127.0.0.1:4173.
- Keep British English in copy.
- Keep project status labels aligned with
data-stagevalues:designconceptdevdraftprodcomplete
- After JS edits, run:
node --check main.js