Personal portfolio website hosted on GitHub Pages.
Live site: triunitystudios.com
- Main site (
index.html) — Data-driven portfolio. Content is loaded from JSON files (data/) and rendered dynamically with vanilla JS. web-projects/— Standalone mini-apps, separate from the main site.
No build step. Serve files with any HTTP server.
Recommended: Live Server for VS Code — install the extension, then either click "Go Live" in the bottom status bar or right-click index.html and select "Open with Live Server". It auto-reloads the browser on file changes.
Alternatively, from the terminal:
python -m http.server 8000sitemap.xml and the GENERATED comment-marked blocks inside index.html and web-projects/index.html are derived from the data/ JSON so search engines can read the content without running JavaScript. Never edit them by hand. After changing data/, regenerate them with Bun:
bun scripts/generateSitemap.js
bun scripts/generateSeoBlocks.jsTo make this automatic on every commit, install lefthook once (winget install evilmartians.lefthook on Windows, brew install lefthook on macOS) and run lefthook install in the repo. If you skip this, CI fails with a message telling you which script to run.
Self-contained mini-apps in web-projects/. Browse them all at triunitystudios.com/web-projects/, an index page that lists every project automatically from the portfolio data.
ChatGPTPong/— Canvas-based Pong gamegravity-sandbox/— Interactive N-body gravitational simulationphoto-editor/— Mobile photo editor with drawing, stickers, filters, and croppingseasonal-color-classifier/— Classify hex colors into seasonal palettesgithub-stats-dashboard/— GitHub repository analytics dashboardrandom-option-picker/— Slot-machine style picker with shareable URLs and reproducible seedstaboo-game/— Deterministic multiplayer Taboo game across phones, no server requiredliga-under-tkd/— Live taekwondo tournament site (standings, combats, athlete profiles) read from a shared Google Sheet, in CA/ES/ENrps-mind-reader/— Rock-paper-scissors against an AI that learns your habits and adapts
GitHub Pages with custom domain. Push to main deploys automatically.
Pull requests are tested automatically: a GitHub Actions workflow runs the full test suite (bun test . -- the web-project tests plus the portfolio data validation) on every pull request, and a pull request cannot be merged while a test fails.