# Frontend‑utvikling

> Utvalgt arbeid som viser denne tjenesten.

- [Styrte fullstack‑utviklingen av GIS‑kart med ansvar for PostgreSQL, Mapbox, ReactJS og NodeJS, og leverte en integrert løsning.](https://engineer.company/nb/portfolio/directed-full-stack-gis-map-development-overseeing-postgresql-25/)
- [Presenterte 200 UI/UX‑forbedringer for GIS‑kartapplikasjonen og økte inntektene 10 ganger gjennom bedre programvarefunksjoner.](https://engineer.company/nb/portfolio/presented-200-ui-ux-improvements-for-the-gis-28/)
- [Bidro i designprosessene for brukergrensesnitt og sikret intuitive, visuelt tiltalende og brukervennlige grensesnitt i prosjektene.](https://engineer.company/nb/portfolio/contributed-to-user-interface-design-processes-ensuring-intuitive-36/)
- [Utviklet 100 webapplikasjoner med HTML/HTML5, CSS/SCSS og rammeverkene Django, WordPress og Joomla, og sikret en variert tilstedeværelse på nett.](https://engineer.company/nb/portfolio/developed-100-web-applications-using-html-html5-css-51/)
- [Designet 30 nettsteder og leverte unike og fleksible løsninger ved å konvertere Photoshop‑design til HTML.](https://engineer.company/nb/portfolio/designed-30-websites-delivering-unique-and-flexible-solutions-52/)
- [Utformet arkitekturen for en lagdelt maritim plattform som skiller en Next.js PWA‑frontend, et Go‑API (Huma/Fiber) og et funksjonslag i PostgreSQL, med all forretningslogikk i databasen.](https://engineer.company/nb/portfolio/architected-a-layered-maritime-platform-separating-a-next-57/)
- [Designet et system for å bytte organisasjonskontekst med localStorage på klienten og speiling i informasjonskapsler på serversiden, slik at brukere kan opptre som organisasjoner de administrerer, med autorisasjon etter prinsippet om minste privilegium.](https://engineer.company/nb/portfolio/designed-an-organization-context-switching-system-with-client-59/)
- [Bygde Next.js 16‑frontenden med bevisste strategier for SSR, SSG og CSR, og en gjenbrukbar fabrikk for forhåndshentede serversider som fjerner N+1‑kaskaden av hentinger fra hver autentisert side som flyttes over på den.](https://engineer.company/nb/portfolio/built-the-next-js-16-frontend-with-deliberate-73/)
- [Leverte full støtte for Progressive Web App — kan installeres og fungerer uten nettforbindelse — med caching under kjøring i Workbox via next‑pwa.](https://engineer.company/nb/portfolio/delivered-full-progressive-web-app-support-installable-and-74/)
- [Designet et «Liquid Glass»-designsystem for iOS 26 og et kanonisk komponentregister håndhevet av lint‑regler for å hindre at brukergrensesnittet spriker.](https://engineer.company/nb/portfolio/designed-an-ios-26-liquid-glass-design-system-75/)
- [Designet produktets UI og UX fra ende til annen — katalogrutenett, doble kort- og tabellvisninger, fortløpende validering av krav og brødsmulenavigasjon.](https://engineer.company/nb/portfolio/designed-the-product-s-ui-and-ux-end-76/)
- [Etablerte et engelsk/dansk internasjonaliseringssystem med 12 027 meldinger per språkversjon fordelt på 458 navneromsfiler, med vokabular håndhevet av linter og et budsjett på 400 linjer per fil.](https://engineer.company/nb/portfolio/established-an-english-danish-internationalization-system-with-linter-78/)
- [Tok plattformens grunnleggende beslutninger i ukene etter at repoet ble opprettet i november 2025 — lagdelingen, datatilgang med databasen først og kravet om null advarsler — og de står seg fortsatt ni måneder senere.](https://engineer.company/nb/portfolio/set-the-platform-s-founding-decisions-in-november-2025-80/)
- [Vedlikeholdt og videreutviklet det eldre statiske Hugo‑nettstedet, og bidro samtidig med UI/UX‑forbedringer til hovedproduktet for forvaltning av eiendeler.](https://engineer.company/nb/portfolio/maintained-and-enhanced-the-legacy-hugo-static-site-87/)
- [Bygde back office for operatørene — rundt 40 administrasjonsruter og 128 komponenter for eierskapskrav, moderering, funksjonsflagg, cache og diagnostikk — slik at plattformen kan driftes uten databasetilgang.](https://engineer.company/nb/portfolio/built-the-operator-back-office-for-the-platform-102/)
- [Bygde et flerspråklig statisk nettsted i Hugo med 108 malfiler, blant dem 53 partials, som publiserer hver side i fire representasjoner fra ett innholdstre på tre språk, og på nytt under sju fokuserte underdomener bygd fra det samme treet.](https://engineer.company/nb/portfolio/built-a-multilingual-static-site-in-hugo-126/)
- [Kuttet nettstedets nettleserdrevne kvalitetsport fra 1 636 sekunder til 615 ved å kjøre kontrollene med de lengste først gjennom en worker‑pool begrenset til fire baner, etter å ha målt at alfabetisk rekkefølge kostet 320 sekunder mot 224.](https://engineer.company/nb/portfolio/cut-the-visual-quality-gate-to-ten-minutes-128/)
- [Erstattet 27 gjengitte skriftstørrelser, der de nærmeste naboene lå 0,6 % fra hverandre, med en Major Third‑skala i seks trinn, og skrev linteren som avviser den tjueåttende.](https://engineer.company/nb/portfolio/replaced-27-font-sizes-with-a-six-step-scale-129/)
- [Førte 32 representative sider — én per mal per språk — til WCAG 2.2 nivå AA i begge fargetemaene, pluss to AAA‑kriterier, med en dokumentert samsvarsoversikt og en kontroll som forsvarer hver påstand.](https://engineer.company/nb/portfolio/took-wcag-2-2-level-aa-across-the-whole-site-130/)
- [Fant og rettet 11 feil i universell utforming som nettleseren meldte var i orden — åtte bunntekstlenker som fortsatt lå i tabulatorrekkefølgen bak pointer‑events, en scroll‑tidslinje som klippet kolofonen av tre sider, og en regelmotor som kjørte 70 av sine 105 regler.](https://engineer.company/nb/portfolio/fixed-11-accessibility-defects-the-browser-called-healthy-131/)
- [Lukket fargesystemet ved 28 dokumenterte farger med en linter som avviser en verdi som er malt, men udokumentert, dokumentert, men ikke malt, feilmålt, skrevet om som en literal, eller innenfor en perseptuell avstand på 0,02 fra en som allerede finnes.](https://engineer.company/nb/portfolio/closed-the-colour-system-at-28-colours-133/)
- [Fant ut at det lyse temaet hadde manglet et helsides overleggslag helt siden det ble skrevet, ved å kreve at begge temaene maler hver lagdelte flate med like mange lag.](https://engineer.company/nb/portfolio/found-the-light-theme-missing-an-overlay-layer-134/)
- [Gjorde innstillingen for redusert bevegelse ærlig etter å ha funnet elleve selektorer som fortsatt animerte under den, fordi en universell transition‑none‑regel taper på spesifisitet mot enhver regel med en klasse.](https://engineer.company/nb/portfolio/made-reduced-motion-honest-135/)
- [Bygde et utskriftsstilark på 637 linjer mot fire dokumenterte atferder i gjengivelsesmotorer, blant dem innfelte overskrifter som ble skrevet ut hvitt på hvitt for enhver leser med nettleseren innstilt på mørkt.](https://engineer.company/nb/portfolio/built-a-637-line-print-stylesheet-136/)
- [Kuttet stilarkpakken fra 87 KB til 31 KB ved å ta ut en base64‑kodet skrift, og fjernet 756 KB fordelt på 22 filer som ble publisert ved hver produksjonssetting og som ingenting refererte til.](https://engineer.company/nb/portfolio/cut-the-stylesheet-bundle-from-87kb-to-31kb-139/)
- [Satte 10 242 linjer JavaScript i kvalitetsporten under en formaterer og en linter etter å ha slått fast at det var den største kodemengden i repoet og den eneste ingenting leste, og rettet 13 funn uten å undertrykke noen.](https://engineer.company/nb/portfolio/brought-the-quality-gate-code-under-a-linter-143/)
- [Bygde en native meldingsklient for macOS i Swift 6 og SwiftUI — 11 141 linjer fordelt på 53 filer — over C‑grensesnittet til en Rust‑kjerne lenket inn som et statisk arkiv fra en låst revisjon.](https://engineer.company/nb/portfolio/built-a-native-macos-messaging-client-in-swift-6-154/)
- [Stoppet en applikasjon som fylte minnet med 41 MB i sekundet — registrert 111 GB komprimerte sider på en maskin med 36 GB — ved å begrense hver hendelsesstrøm, abonnere etter hendelsestype og sette et frekvensbudsjett på loggingen, som tok 610 996 logglinjer ned til 1 411.](https://engineer.company/nb/portfolio/stopped-an-application-filling-memory-at-41mb-a-second-155/)
- [Ga hver kontroll med bare ikon i grensesnittet et navn for skjermlesere etter å ha funnet at send‑knappen ble lest opp som «arrow up circle, button», og skrev linteren som krever etiketten innen åtte linjer fra ikonet.](https://engineer.company/nb/portfolio/named-all-seventeen-interface-icons-for-screen-readers-159/)
- [Bygde et designsystem med 48 tokens på plattformens eget glassmateriale og skrev linteren som avviser et magisk tall, en hardkodet skriftstørrelse eller en animasjon som ignorerer innstillingen for redusert bevegelse.](https://engineer.company/nb/portfolio/built-a-48-token-design-system-160/)

<https://engineer.company/nb/services/frontend-development/>
