An interactive 3D yearbook for The Bridge Program's 2026 cohort, bringing 286 fellow profiles and nearly 1,000 event memories into navigable infinite canvases.

TBP Fellows Directory is an interactive digital yearbook and memory archive for The Bridge Program's 2026 cohort. Instead of presenting a conventional grid, it uses React Three Fiber and Three.js to place fellow portraits throughout a continuously navigable 3D canvas. Selecting a portrait opens a detailed profile, while a searchable directory provides a structured alternative for finding people. A second infinite canvas presents event memories across 999 photographs and videos, including proximity-aware audio for video content. Supabase stores fellow records, event metadata, and profile-change requests; Cloudinary delivers optimized media; and an AI-assisted moderation workflow helps administrators review proposed profile edits. The application is deployed on Vercel and adapts texture quality, preload volume, and concurrency to the user's device and network conditions.
| Layer | Responsibility | Technology |
|---|---|---|
| Presentation | Fellows canvas, memories canvas, directory, profile editing, admin review | React 19, TypeScript, CSS Modules |
| 3D rendering | Spatial chunk generation, camera movement, texture planes, culling, proximity audio | Three.js, React Three Fiber, Drei, WebGL |
| Data | Fellow profiles, event media, profile-update requests and review functions | Supabase REST and PostgreSQL |
| Media | Responsive image/video transformations and CDN delivery | Cloudinary |
| Moderation | Conservative text and portrait review for submitted profile changes | Mistral AI |
| Delivery | Vite production bundle and hosting | Vercel |
The camera position is mapped to 110-unit spatial chunks. Only chunks within the configured render distance are generated, while planes outside the depth and distance thresholds fade out and stop rendering. Deterministic hashing assigns media to each chunk, and bounded plane and texture caches prevent an unbounded canvas from producing unbounded memory use.
The application loads a local manifest as an offline-safe baseline, fetches up to 1,000 Supabase records, and merges remote fields over matching IDs or slugs. Profile edits are written to a review queue rather than directly to live fellow records. Approved changes are applied through controlled database functions and immediately merged back into the client state.
Public clients use the Supabase publishable key for approved read and request-submission flows. Administrative review operations are exposed through restricted database functions rather than embedding service credentials in the browser.