What it is
I built my creative portfolio as a small operating system: draggable windows, a taskbar, a start menu with descriptions, a terminal with a fixed command list, a music player, playable training courses and a gallery. It uses plain ES modules on top of a static site generator, with no framework.
The look belongs to the creative side. What carries over to client work is how the site is built.
Architecture
View diagram full sizeScroll sideways to see all of it
- Deep links both ways. Opening a window updates the address; pasting an address opens the window. Back and forward restore windows instead of leaving the site.
- Apps load on first use. Each app is a module with one
mountfunction, so the first paint carries only the shell. A window closed while loading never mounts, so there are no orphaned apps. - A frame budget. Animated pieces pause when hidden or covered, and step down when frames run long.
- Preferences in one place. Text size, contrast, motion, sound and keyboard shortcuts go through one allow-listed store. It falls back from local storage to session storage to memory, so blocked storage never breaks the site.
- A safe terminal. A fixed table of commands, no evaluation of input, length limits and text-only output.
Testing
| Suite | Checks | What it covers |
|---|---|---|
| Edge cases | 265 | deep links, reduced motion, storage blocked or offline, slow network, phone layouts, terminal safety |
| Course packages | 231 | archive integrity, manifests, licences, no stray files |
| Course playback | 135 | every course loads, plays and scores in its window |
| Shell | 49 | open, close, focus, routes, history |
| Smaller suites | 55 | answer paths, lifecycle, audio never starting on its own |
All of them run in a headless browser against a frozen snapshot of the site, so a file saved mid-run can’t produce a false failure.
Performance
measured with a scripted browser benchmark (CPU throttling, frame sampling, long-task observer)date 2026-10-25data real
What it proves
ArchitectureA complex front end with no framework, still readable as plain pages.
QualityI run hundreds of automated checks on a frozen build before anything ships.
JudgementI set limits by measurement, and state plainly what the measurement cannot show.
