# Discovery brief (2026-10-10) Synthesized from two read-only Haiku mapping passes of commit 08f3ac1 plus a look at the running site. ## Stack Vue 3.5 + TypeScript, Vite 8, three 0.185 (EffectComposer, bloom), zod, Geist fonts. SSR + prerender to static HTML with hydration. Vitest, Playwright (+axe). Node 22. ## Run - `npm run dev` (vite on 127.0.0.1) - `npm run typecheck`, `npm run test:unit`, `npm run test:browser` - `npm run build:preview` = full static build with budgets ## Structure Single page, hash sections: start, profile, experience, infrastructure, selected-builds, additional-work, toolkit, contact. `src/components` (HeroJourney, SceneCanvas, ProjectCard, ...), `src/scene` (three world), `src/journey` (scroll/nav controllers, road signs), `src/audio` (adaptive soundtrack), `src/styles` (8 layered CSS files), `src/content` (zod schemas). ## Content (preserve) `content/public/portfolio-content.json`: Luca Pîslaru, System Administrator & Full-Stack Developer, Bucharest. Three roles, systems proof (Nextcloud migration, self-hosted platform), selected and additional projects, toolkit, education, languages, LinkedIn/GitHub/GitLab/email contact. Media in `inputs/prepared-assets`. ## Current identity Dark night-drive grand-tourer: fixed WebGL car/road scene behind content, scroll drives the camera, road-sign navigation, adaptive soundtrack. Palette canvas #040814, cyan #78d8e5, magenta #c74b91, amber #f4ad67. Geist + Geist Mono. ## Works well Strong content hierarchy, semantic no-JS/reduced-motion fallbacks, strict a11y and budget testing, native scrolling. ## Weaknesses - Scroll perf: 71 fps with chapter masks vs 116 without (docs/performance). - ~2.4 MB of GLB models; heavy on mobile. - 8 overlapping stylesheets, repeated media queries. - Screen-reader and audience validation still pending. - The one-note "car on a road" metaphor says little about sysadmin + full-stack work. ## Must preserve All content and links; CSP/nginx/Cloudflare deploy contracts (nginx test asserts exact headers); performance budgets (initial JS 120 KB, HTML+CSS 100 KB, fonts 120 KB); test-hook gating (`__PORTFOLIO_TEST_BUILD__` false in production); prerender markers in index.html.