How theyellowduck/portfolio-website works
Museum Portfolio serves a fast web portfolio and a canvas-based museum from shared exhibit content. Visitors browse the site, enter the museum, navigate rooms, and inspect exhibits; separate routes provide ghost presence and résumé/transcript data. The README documents the engine/UI boundary and major capabilities; sampled source confirms engine orchestration and ghost persistence, but does not expose every UI handoff or data-refresh implementation.
Main entry points: engine.ts Game engine · projects.ts Exhibit content · page.tsx Home page · SiteShell.tsx Site shell
Components 22
Visitor experiences
- Home page
src/app/page.tsx - Site shell
src/components/SiteShell.tsx - Web portfolio
src/components/site/Portfolio.tsx - Game canvas
src/components/GameCanvas.tsx - Game HUD
src/components/HUD.tsx - Exhibit overlays
src/components/overlays/ExhibitOverlay.tsx
Museum engine
- Game engine
src/game/engine.ts - Player movement
src/game/player.ts - Collision
src/game/collision.ts - Pathfinding
src/game/pathfinding.ts - Generated world
src/game/tilemap.ts - Scene renderer
src/game/renderer.ts - Ghost replay
src/game/ghosts.ts
Portfolio content
- Exhibit content
src/data/projects.ts - Skills wing
src/lib/course-skills.ts
Routes and services
- Ghost API
src/app/api/ghosts/route.ts - Upstash Redis
- Résumé API
src/app/api/resume/route.ts - Transcript API
src/app/api/transcript/route.ts - Résumé parser
src/lib/resume-parser.ts - Transcript parser
src/lib/transcript-parser.ts
Other components
- Visitor
Connections 22
- Visitor → Home page: opens
- Home page → Site shell: renders
- Site shell → Web portfolio: shows
- Visitor → Game canvas: enters museum
- Game canvas → Game engine: hosts
- Game engine → Player movement: updates
- Player movement → Collision: resolves movement
- Game engine → Pathfinding: finds routes
- Game engine → Generated world: reads map
- Game engine → Scene renderer: draws scene
- Game engine → Game HUD: emits events
- Game HUD → Exhibit overlays: opens exhibits
- Game engine → Exhibit content: reads exhibits
- Web portfolio → Exhibit content: renders content
- Exhibit content → Skills wing: supplies skills
- Game engine → Ghost replay: replays paths
- Game engine → Ghost API: loads and submits paths
- Ghost API → Upstash Redis: reads and writes
- Visitor → Résumé API: requests résumé
- Visitor → Transcript API: requests transcript
- Résumé API → Résumé parser: serves parsed data
- Transcript API → Transcript parser: serves parsed data