marcusjenshaug.no
Dette nettstedet: portefølje og CV med innebygd adminpanel, bygget som identitetskilde for søkemotorer og språkmodeller, med en WebGL-hero som degraderer pent.

Dette nettstedet er både portefølje og CV, og et prosjekt i seg selv. Alt innhold, fra prosjektene til Nå-siden, redigeres i et innebygd adminpanel. Utkast kan forhåndsvises på de offentlige rutene uten å publiseres, og merkes noindex så lenge de er utkast. Planlagt publisering ligger som cron-jobber i databasen, ikke i applikasjonen.
Identitetskilde
Siden er bygget som et hjem for identiteten min på nett, både for søkemotorer og for språkmodeller. En JSON-LD-graf knytter WebSite, Person, Article, CreativeWork og BreadcrumbList sammen, med sameAs mot Wikidata, og maskinlesbare feeds finnes som RSS, JSON Feed og llms.txt. Google indekserte siden og ga den et eget Knowledge Panel innen få dager etter lansering.
Det tekniske
Heroen er en WebGL-shader med simplex-støy, musedrevet ripple og kromatisk aberrasjon, skrevet i GLSL. Den degraderer i fire trinn: viewport-terskel, prefers-reduced-motion, pause via IntersectionObserver når den er ute av bildet, og permanent fallback til et vanlig bilde hvis nettleseren mister WebGL-konteksten. Krysstoningen mellom prosjektbilder er en to-teksturers shader med guard mot avbrutte overganger, slik at forhåndsvisningen ikke låser seg på feil bilde.
All skriving går gjennom server actions med skjemavalidering. Ingen POST-route-handlere.
Egenskrevet designsystem uten UI-kit. Egne komponenter, fargetokens i oklch, og lys og mørk modus uten flimmer ved lasting.
Stack
Next.js 15, React 19 og TypeScript, Tailwind CSS 4, Supabase, GSAP og Lenis for bevegelse, three.js med React Three Fiber for heroen, MDX for tekst, og Vercel.