Christian Gennari
English
Christian Gennari
.NET-⁠utvecklareHudiksvall

Jag bygger användbar mjukvara kring verkliga problem.

Ge mig ett problem så lyssnar jag, skriver ner vad det egentligen kräver och bygger hela lösningen: databas, gränssnitt och drift. Sedan kan de som använder den sluta tänka på problemet.

Jag är inne i sista delen av min .NET-⁠utbildning på Edugrade: 22 veckors LIA på Statens tjänstepensionsverk (SPV) i Sundsvall, november 2026 till april 2027. Vid sidan om fortsätter jag att bygga Nostos, och nyss byggde jag Lärka med en klasskamrat.

Lösningar jag har byggt

Tre projekt, vart och ett byggt kring ett problem jag har sett på nära håll.

Nostos

Ett hem för ditt läsande.

Problemet
Läsande, anteckningar och skrivande sker oftast i separata verktyg (en katalog, en e-⁠läsare, en anteckningsapp, en ordbehandlare) och kopplingen mellan en tanke och sidan den kom ifrån går förlorad. Många av verktygen låser dessutom in ditt bibliotek hos någon annan.
Lösningen
En läs- och skrivmiljö som håller ihop böcker, anteckningar, idéer och utkast. EPUB, PDF, ljudböcker och fysiska böcker samlas i ett bibliotek, en begreppsgraf kopplar ihop idéer över allt du har läst, och en skrivstudio håller källorna bredvid utkastet.
Tekniken
En .NET 10-backend med Minimal API-⁠endpoints ovanpå ett tjänstelager och EF Core, och en Angular 21-frontend byggd på standalone-komponenter och Signals. Den självhostade versionen körs med SQLite och det lokala filsystemet i Docker Compose. Nostos Cloud är ett separat, privat hostinglager på PostgreSQL som hämtar in open source-produkten som en git-submodul låst till en viss version, så att båda versionerna bygger på exakt samma app. Böckerna kan även nås från e-⁠läsare via en OPDS-katalog.
För vem
Människor som läser för att tänka och skriva. Öppen källkod (AGPLv3), går att självhosta och finns även som hostad tjänst.
.NET 10, ASP.NET Core, EF Core, Angular 21, SQLite, PostgreSQL, Docker

Early access till Nostos Cloud, den hostade tjänsten, är öppet. Jag söker testare, och du får ett gratis år i utbyte. Den självhostade versionen är alltid gratis.

Lärka

Allt för din utbildning, på ett ställe.Vi var två. Viktor Johansson och jag byggde den som vårt grupprojekt på Edugrade, 2026.

Problemet
Studenter och lärare på en yrkeshögskola behöver schema, uppgifter, betyg och LIA samlat, i mobilen lika väl som på datorn.
Lösningen
En lärplattform med en tydlig roll för varje slags användare, och en betygsmodell som följer skolans regler.
Tekniken
Ett ASP.NET Core-API med EF Core mot PostgreSQL, en Vue-frontend, inloggning med Microsoft och automatiska tester och driftsättning vid varje ändring.
För vem
Studenter, lärare och administratörer på en yrkeshögskola som Edugrade.
.NET, ASP.NET Core, EF Core, Vue, PostgreSQL, Docker, GitHub Actions

Ridealong

En riktig webbläsare för alla AI-agenter, med en människa som kan ta ratten.

Problemet
AI-agenter fastnar överallt där det saknas ett API: instrumentpaneler, adminsidor, allt som kräver inloggning. Headless-webbläsare tar sig inte förbi tvåstegsverifiering, och du ser inte vad de gör.
Lösningen
En riktig, inloggad webbläsare på din egen server som vilken MCP-klient som helst kan styra. Du följer med live i en webbvisare. När en agent stöter på en 2FA-kod eller en CAPTCHA ber den dig ta över, och fortsätter när du lämnar tillbaka. Flera agenter kan arbeta samtidigt, var och en i sitt eget fönster.
Tekniken
En låst Docker-container: Brave på en virtuell skärm, Playwright MCP via Chrome DevTools Protocol och en visare i Node.js som strömmar skärmen till alla enheter och skickar pushnotiser. Installationen är ett enda kommando, som också kopplar in de agenter den hittar.
För vem
Den som låter AI-agenter arbeta i en webbläsare och vill behålla kontrollen, med Claude Code, Codex, Cursor eller någon annan MCP-klient.
Docker, Brave, Playwright MCP, Node.js, WebSockets · MIT

Mindre saker

  • Commit-meddelanden från din stagade diff, i VS Code och JetBrains.TypeScript, VS Code API, Kotlin
  • En självhostad skrivapp som sparar ren Markdown.Node.js, vanilla JavaScript, Markdown
  • Säkerhetskopiera en Ubuntu-miljö och återställ den på en ny installation..NET 10, C#, CLI
Tidigare projekt, byggda för att lära mig ett koncept ordentligt
  • Rumsbokning med rollbaserad åtkomst för en skola.
  • Tre ASP.NET Core-tjänster som pratar över HTTP.
  • Realtidschatt över vanlig HTTP, utan WebSockets.
  • En filhanterare i Google Drive-stil med strikta typer hela vägen.
Små verktyg jag gjorde för att jag behövde dem
  • OllamaRadarTerminalradar som mäter time-to-first-token för Ollama Cloud-modeller och förutspår vilka timmar som är bäst att använda dem. C#
  • clipbeamWezTerm-plugin som skickar skärmdumpar från urklipp i Windows till en Linux-server via SSH. PowerShell
  • Intentional PauseEn enfilssida för sidblockerare: ett andetag och en fråga innan du öppnar något distraherande. HTML

Så arbetar jag

Pussel för sin egen skull lockar mig inte särskilt. Jag trivs med att stanna kvar i ett problem tills det inte längre stör någon.

Eget företag. Som medgrundare till ett mediebolag lärde jag mig att översätta en kunds vision till något konkret, och att den snyggaste koden är värdelös om den löser fel problem. Därför börjar jag med att lyssna och skriva ner vad som faktiskt behövs.

Statsvetenskap. Studierna gav mig vanan att se hur små delar påverkar helheten. I kod blir det tydliga gränser mellan lagren, så att en del kan ändras utan att resten märker det. Det håller den tekniska skulden låg.

Medieproduktion. Åren med video vässade mitt öga för den som sitter på andra sidan skärmen. Jag bygger hela vägen, från databas och API till gränssnitt och drift, och det är upplevelsen för den personen som avgör om det blev bra.

Jag väljer verktyg efter problemet framför mig. Oftast blir det C# och .NET i kärnan, Angular eller React för gränssnittet, PostgreSQL eller SQLite som databas, och Docker och Azure för driften.

Alla verktyg, och vad jag använder dem till
  • C#, ASP.NET Core, EF CoreMin primära plattform. En miljö för att bygga robusta, typsäkra och snabba system, från API:er till CLI-verktyg.
  • TypeScriptStrikt typning för frontend, tillägg och verktyg.
  • AngularStruktur för stora frontends. Signals och standalone-komponenter i Nostos.
  • ReactKomponentbaserade gränssnitt.
  • Node.jsLätta tjänster, skript och byggverktyg.
  • SQL & SQLiteRelationsdesign, från inbäddad SQLite till SQL Server.
  • PostgreSQLProduktionsdata för den hostade tjänsten Nostos Cloud.
  • DockerReproducerbar självhosting och driftsättning.
  • AzureMolntjänster, hosting och AI-tjänster.
  • CSS & SCSSResponsiv, modulär styling och designsystem.
  • Git & GitHubVersionshantering, pull requests och CI-flöden.
“To affect the quality of the day, that is the highest of arts.”
Henry David Thoreau, Walden (1854)

När jag inte kodar

När jag inte sitter vid skärmen hittar du mig förmodligen djupt försjunken i en bok. Klassikerna och filosofin är min motvikt till det digitala.

Det finns en vila i att lämna den snabba tekniken för något som fått ta tid. Att stänga datorn efter en dag av problemlösning och i stället möta ett månghundraårigt resonemang ger perspektiv, och låter tankarna röra sig i ett annat tempo.

Jag trivs i kontrasten mellan det exakta i en kodbas och det reflekterande i en essä av Montaigne. Ofta dyker de bästa lösningarna upp just när blicken lyfts från skärmen. Ett utvilat huvud tänker helt enkelt klarare.

Och då och då en tyst fjällhed.

Vägen hit

AZ-900: Microsoft Azure FundamentalsMicrosoft · avklarad 15 februari 2026
  • 2026–2027
    Statens tjänstepensionsverk (SPV), SundsvallLIA-praktik

    LIA-delen av min utbildning på Edugrade.

  • 2025–2027
    EdugradeSystemutvecklare .NET med AI-kompetens

    Tvåårig yrkeshögskoleutbildning i modern fullstack-utveckling med C# och .NET, från databasdesign och backend-arkitektur till frontend och Azure AI-tjänster.

  • 2022–2025
    MittuniversitetetKandidatexamen i statsvetenskap

    Fokus på styrning och beslutsprocesser. Studierna lärde mig att analysera komplexa system och använda statistik för att hitta mönster i stora datamängder.

  • 2021–2022
    Top of Heart ABKreatör & redigerare

    Ansvarade för videoproduktion från inspelning till färdig leverans, med redigering och export mot strama tidsramar och höga kvalitetskrav.

  • 2019–2022
    Toginta ProductionsMedgrundare & Creative Manager

    Grundade och drev ett mediebolag med ansvar för hela leveranskedjan. Lärde mig att prioritera under press, översätta kunders visioner till konkreta leveranser och värdesätta struktur i kreativt arbete.

  • 2016–2019
    HälsingegymnasietGymnasieexamen, Teknikprogrammet (ICT)

    Inriktning mot informations- och medieteknik. Här väcktes mitt intresse för programmering.

Kontakt

Oavsett om det gäller en tjänst, en idé, feedback på Nostos eller bara en kaffe är min inkorg öppen.

contact@cgennari.com

LinkedInGitHubCV (PDF)

Skärmbild av ELLA

ELLA

Rumsbokning med rollbaserad åtkomst för en skola.

Edugrade Location & Logistics Assistant: ett rumsbokningssystem för skolor, med rollbaserad åtkomstkontroll och validering i realtid. Byggd med Viktor Johansson, André Pontén och Marcus Lööv som grupprojekt på Edugrade.

Problemet

Att upprätthålla strikta tidsregler och behörighetsnivåer för administratörer, lärare och studenter utan att kodbasen blir rörig.

Så är det byggt

En MVC-backend på Express med sessionsbaserad autentisering (scrypt), och en modulär frontend i vanilla JavaScript som hanterar state och rendering för hand, ett medvetet sätt att lära sig vad ramverken gör åt en.

Teknik

Node.js, Express, vanilla JavaScript, MVC, SQLite, RBAC

Länkar

Skärmbild av Free AI Commit Message

Free AI Commit Message

Commit-meddelanden från din stagade diff, i VS Code och JetBrains.

Ett IDE-tillägg som skriver Conventional Commits utifrån dina stagade ändringar. Det fungerar direkt utan API-⁠nyckel, med din egen gratisnyckel för Gemini, Groq, OpenRouter eller GitHub Models, eller helt offline med en lokal Ollama-modell. Publicerat på VS Code Marketplace, med ett syskonplugin för Rider, IntelliJ IDEA, PyCharm och WebStorm.

Problemet

Bra commit-meddelanden kräver ansträngning, och de flesta AI-verktyg för commits kräver en betald prenumeration eller API-⁠nyckel innan de gör något alls.

Så är det byggt

Två native-klienter (TypeScript på VS Code-API:t och Kotlin på IntelliJ Platform) byggda kring samma design för leverantörer och prompter. Ett litet edge-API med nyckelpool och rate limiting driver läget utan konfiguration, medan förfrågningar med egen nyckel går direkt från IDE:n till leverantören.

Teknik

TypeScript, VS Code API, Kotlin, IntelliJ Platform, LLM-leverantörer

Länkar

Skärmbild av Scriptorium

Scriptorium

En självhostad skrivapp som sparar ren Markdown.

En lugn plats att skriva som sparar allt som rena .md-filer. Ingen databas, inga konton, ingen telemetri, bara du och dina ord.

Problemet

De flesta skrivappar kommer med molnsynk, konton och proprietära format. Jag ville ha ett minimalistiskt skrivutrymme som respekterar ägande och långsiktighet.

Så är det byggt

En frontend i vanilla JavaScript och en lätt Node.js-backend. Filerna lagras som Markdown på disk, så de förblir portabla, versionshanterbara och läsbara i vilken editor som helst.

Teknik

Node.js, vanilla JavaScript, Markdown, Docker

Länkar

Skärmbild av UbuntuSafeSnap

UbuntuSafeSnap

Säkerhetskopiera en Ubuntu-miljö och återställ den på en ny installation.

Ett CLI i .NET 10 som sparar din Ubuntu-konfiguration (paket, dotfiles och konfigurationsfiler) och återställer den efter en ren installation.

Problemet

Att installera om Ubuntu innebär timmar av att installera paket och göra om dotfiles och inställningar. Befintliga backupverktyg är antingen för breda eller för snäva.

Så är det byggt

Ett modulärt .NET CLI med separata kommandon för backup och återställning. Ett deklarativt manifest spårar installerade paket, dotfile-sökvägar och systemkonfiguration, så att en ögonblicksbild är reproducerbar och lätt att versionshantera.

Teknik

.NET 10, C#, CLI, Linux

Länkar

Skärmbild av Ordersystem

Ordersystem

Tre ASP.NET Core-tjänster som pratar över HTTP.

En arkitekturövning: ProductService, UserRepository och OrderService körs som separata webb-API:er. Ordrar lagrar bara ID:n och berikas med användar- och produktdata från de andra tjänsterna när de läses.

Problemet

Att dela upp en domän i tjänster utan att duplicera data, och hantera de fel som uppstår när anropen går över nätverket.

Så är det byggt

Varje tjänst äger sin data bakom ett repository. OrderService validerar nya ordrar mot de två andra tjänsterna, lagrar bara referenser och översätter fel längre ner i kedjan till tydliga statuskoder (400, 404, 502, 503). Ett delat projekt håller kontrakten.

Teknik

ASP.NET Core, mikrotjänster, HTTP + JSON, delade kontrakt

Länkar

Skärmbild av Ducklord Chat

Ducklord Chat

Realtidschatt över vanlig HTTP, utan WebSockets.

En chattserver och en Raylib-klient för skrivbordet, byggda för att förstå asynkron kommunikation på djupet. Meddelanden når fram direkt via en egen long polling-arkitektur.

Problemet

Att bygga en trådsäker chatt med lagring i minnet som klarar samtidiga användare, utan färdiga realtidsbibliotek som SignalR.

Så är det byggt

En MessageNotifier byggd på TaskCompletionSource väcker väntande long poll-anrop i samma stund som ett meddelande kommer in, och ReaderWriterLockSlim håller lagringen konsekvent vid samtidiga skrivningar.

Teknik

.NET 9, ASP.NET Core, Raylib (C#), Long polling, OpenAPI

Länkar

Skärmbild av Duck Drive

Duck Drive

En filhanterare i Google Drive-stil med strikta typer hela vägen.

En filhanterare med drag and drop, fuzzy search i realtid och en egenbyggd filbaserad databas.

Problemet

Att behålla strikt typsäkerhet i en fullstack-miljö i JavaScript, och hantera filmetadata effektivt utan en databasmotor.

Så är det byggt

Delade DTO:er som valideras med Zod utgör kontraktet mellan klient och server. Backend kapslar in fil-I/O i en databasliknande DbService, och Angular-frontenden använder Signals för reaktiv sökning.

Teknik

Angular 21, Node.js, Zod, delade DTO:er, Signals

Länkar