Prosjekter
Her finner du en oversikt over noen av mine prosjekter. Jeg har valgt ut tre som viser bredden i min erfaring – fra backend og enhetstesting i bachelorprosjektet, til fullstack-utvikling med .NET og React.
☕ Drømmekoppen — Bachelorprosjekt (2025)
Rolle: Backend-utvikler og ansvarlig for enhetstesting
Teknologi: ASP.NET Core, C#, REST API, SQLite, GitHub Actions for testing og CI
Type prosjekt: Bacheloroppgave, 2025 – OsloMet
Beskrivelse:
Drømmekoppen er en interaktiv webapplikasjon der brukeren kan bygge sin egen kaffekopp ved å velge ingredienser. Applikasjonen visualiserer hvordan koppen fylles med ulike lag av ingredienser i sanntid.
Backend-en ble utviklet i ASP.NET Core og eksponerte et REST-API for frontend-kommunikasjon.
Jeg hadde hovedansvar for backend-logikken, enhetstesting av API-endepunktene og validering av dataflyt mellom lagene.
Læringspunkter:
- Design og implementasjon av RESTful API-er i C#.
- Strukturering av kode for testbarhet og bruk av xUnit til enhetstesting.
- Samarbeid i team med delt ansvar for både backend og UI-logikk.
📎 Kode: Se prosjekt på GitHub
🧠 🌐 matchaogmocha.no
- (Merk: Nettsiden kjører på gratisnivået i Azure, og kan derfor være treg ved oppstart. Dette er bevisst for å holde kostnadene nede.)
🖼️ Bilder, kommentarer og notater (Fullstack-prosjekt)
Rolle: Fullstack-utvikler
Teknologi:
- Del 1: C#, ASP.NET Core (både frontend og backend)
- Del 2: ASP.NET Core backend (C#) + React frontend (TypeScript)
- Database: SQLite
Beskrivelse:
Dette prosjektet ble utviklet i to deler som en del av faget Webprogrammering.
Applikasjonen lar brukere laste opp bilder og skrive notater, samt kommentere på både bilder og andres notater.
I første versjon var hele løsningen bygget i .NET (Razor Pages + MVC).
I den andre versjonen flyttet vi frontend til React (TypeScript) for en mer dynamisk brukeropplevelse, og beholdt backend i ASP.NET Core som REST API.
Funksjonalitet:
- Opplasting av bilder og notater knyttet til bruker-ID
- Relasjonsbaserte kommentarer (kommentarer på bilder og andre kommentarer)
- Datamodellering og CRUD-operasjoner gjennom repository-pattern
- Bruk av React Hooks og komponentstruktur i frontend
Læringspunkter:
- Erfaring med fullstack-arkitektur og REST-kommunikasjon
- Forståelse av datamodellering og relasjoner
- Integrasjon av React-frontend mot .NET-backend
📎 Kode: Se prosjekt på GitHub
🧠 Demo: Vises på forespørsel
🤖 AI-agent i Python — “Build an AI Agent with Gemini”
Rolle: Solo-utvikler
Teknologi: Python, Google Gemini API (genai), dotenv, subprocess
Beskrivelse: Et eksperimentelt prosjekt hvor jeg bygde en AI-agent i Python som kan tolke brukerkommandoer, planlegge funksjonskall og utføre dem dynamisk. Agenten kommuniserer med Gemini-modellen gjennom et system av meldinger (messages) og kan blant annet liste filer, lese innhold, kjøre Python-filer og skrive filer basert på hva brukeren spør om.
Prosjektet var en del av et dypdykk i LLM-integrasjon, tool use og “reasoning loops”, hvor modellen selv avgjør når og hvordan verktøy skal brukes.
Funksjonalitet:
- Dynamisk funksjonskall basert på LLM-respons
- Iterativ “reasoning loop” med maks 20 steg
- Integrasjon mot Google Gemini via genai.Client
- Sikker kjøring av Python-filer med subprocess og mappesjekk
- Støtte for både tekstrespons og funksjonsresultater
Læringspunkter:
- Bruk av Gemini API og verktøysfunksjoner i Python
- Implementering av funksjonskall i LLM-agent-arkitektur
- Forståelse av samtalehistorikk (messages) og tool responses
- Robust feilhåndtering og output-parsing
📎 Kode: Se prosjekt på GitHub
🪐 Asteroids — Objektorientert spillutvikling i Python
Beskrivelse:
Et moderne gjenoppbygg av det klassiske Asteroids-spillet, utviklet fra bunnen av i Python med Pygame.
Spillet demonstrerer bruk av objektorientert programmering (OOP), kollisjonsdeteksjon og enkel fysikksimulering.
Teknologi og verktøy:
- Python
- Pygame
- Objektorientert programmering (OOP)
- Hendelseshåndtering, animasjon og spill-logikk
Funksjonalitet:
- Spilleren kan bevege, rotere og skyte
- Kuler har nedkjøling (cooldown) for realistisk gameplay
- Asteroider beveger seg i tilfeldige retninger og splittes ved treff
- Kollisjoner oppdages og håndteres dynamisk
Hva jeg lærte:
- Hvordan strukturere et spill i Python ved hjelp av klasser
- Implementering av kollisjonsdeteksjon mellom objekter
- Oppdateringsløkker, animasjon og hendelsesstyrt programmering
- Design av små, isolerte moduler for ulike spillkomponenter
📎 Kode: Se prosjekt på GitHub
🐍 Bookbot — Tekstanalyse i Python
Beskrivelse: Et lite kommandolinjeverktøy som analyserer tekstfiler (for eksempel bøker) og genererer en rapport over ordtelling og bokstavfrekvens. Prosjektet ble utviklet som en introduksjon til lokale CLI-applikasjoner i Python, med fokus på filhåndtering, strengbehandling og bruk av moduler.
Teknologi og verktøy:
- Python
- Kommandolinje (CLI)
- Filhåndtering og datastrukturer (dict, list)
- Funksjonsdeling og modulstruktur
Hva jeg lærte:
Gjennom prosjektet fikk jeg erfaring med hvordan man:
- Leser og prosesserer tekstfiler i Python
- Bruker ordbøker og lister for statistisk analyse
- Skriver modulær og gjenbrukbar kode (import av stats.py)
- Lager et ryddig brukergrensesnitt i terminalen
📎 Kode: Se prosjekt på GitHub
Flere prosjekter kommer snart 🚧