Case archive
Projekt som visar systemtänk i praktiken
Sju leveranser där värdet sitter i mer än ytan: bokningslogik, datapipelines, innehållsflöden, drift och gränssnitt som går att använda.
ProblemEn verksamhetsnära bokningsprodukt behöver hantera gäster, resurser, tider, personalroller och konflikter utan att skapa friktion för användaren.
LösningJag byggde en Laravel-baserad plattform med publik bokning utan konto, admin- och staff-vyer, RBAC, tenant-isolering och transaktionssäker kontroll av bokningskrockar.
Vad projektet visarVisar att jag kan bygga system där affärsregler, datamodell och vardagsflöden måste sitta ihop, inte bara ett snyggt frontendskal.
DetaljerTenant-isoleringRollbaserad åtkomstKonfliktkontrollVisuell golvplanNeon + Render
TeknikLaravel 11PHP 8.3Neon PostgreSQLBladeTailwindAlpine.jsRender
ProblemVäxelkurser behöver kunna jämföras över tid med KPI:er, diagram och riskindikatorer utan att kräva tung backenddrift.
LösningJag byggde en monorepo med React/TypeScript-frontend och en Python-pipeline som hämtar ECB-data, publicerar statiska JSON-filer och uppdateras dagligen via GitHub Actions.
Vad projektet visarVisar att jag kan koppla ihop data, CI, prestanda och interaktiv UX till en lösning som är enkel att drifta och lätt att resonera om.
DetaljerDaglig CI-uppdateringStatiska datafilerKPI-beräkningJämförelselägeTvåspråkigt UI
TeknikReactTypeScriptVitestPythonpytestruffChart.jsGitHub Actions
ProblemBesökare ska snabbt förstå bana, upplägg och resultat, samtidigt som arrangörerna behöver ett säkert sätt att registrera spelare, rundor och banor utan att röra databasen direkt.
LösningJag byggde en React/Vite-frontend som pratar med en egen ASP.NET Core-backend: publika säsongs- och spelarsidor, en adminpanel bakom JWT-inloggning för att hantera spelare, rundor och banor, samt ett adapterlager som normaliserar API-svarens skiftande form.
Vad projektet visarVisar att jag kan bygga och koppla ihop en frontend mot en egen autentiserad backend över två repon, med adapters och en robust API-klient som håller UI:t oberoende av backendens exakta svarsform.
DetaljerJWT-säkrad adminpanelCRUD för spelare/rundor/banorAdapterlager mot API-kontraktAPI-klient med timeout/retrySpelarstatistik per säsong
TeknikReact 19ViteReact RouterTailwindASP.NET CoreJWTRender
ProblemAtt föra runda på papper ger ingen data att förbättra sig från. Golfare behöver ett sätt att logga rundor hål för hål och få konkret återkoppling på vad som faktiskt kostade slag.
LösningJag byggde en fullstack Next.js-app med hål-för-hål-scorecard, localStorage-lagring, statistikdiagram, screenshot-import via AI-vision och Claude-driven coachinganalys per runda.
Vad projektet visarVisar end-to-end produkttänk: säker AI-integration på serversidan, strukturerad data från ostrukturerad input och ett gränssnitt som håller under en runda.
DetaljerAI på serversidanScreenshot-importlocalStorageHål-för-hål-statistikCoachingrapport
TeknikNext.js 16TypeScriptTailwind v4Anthropic SDKZodRender
ProblemLokalfotboll är utspridd över flera källor och lokaltidningar. Ingen enskild plats samlar tabeller, matcher och målskyttar för kommunens lag, uppdaterat automatiskt.
LösningJag byggde en Next.js-app som hämtar serier, matcher och tabeller från en extern sportkälla, och som låter Claude läsa lokaltidningarnas matchreferat för att bedöma relevans och extrahera målskyttar ur ostrukturerad text.
Vad projektet visarVisar att jag kan bygga en källagnostisk ingest-arkitektur och använda AI för strukturerad extraktion ur text, drivet av ett schemalagt, kostnadsfritt driftupplägg.
DetaljerKällagnostisk ingestAI-driven relevansfiltreringMålskytte-extraktion ur textCron via GitHub ActionsSupabase Postgres
TeknikNext.js 16TypeScriptDrizzle ORMSupabaseZodTailwind v4Anthropic SDKGitHub ActionsRender
ProblemAtt dela utlägg i grupp (resa, sommarstuga, matlag) slutar ofta i ett virrvarr av småskulder korsvis mellan alla, och ingen vet riktigt vem som ska betala vem.
LösningJag byggde en Laravel + Inertia + Vue-app med grupper, delade utlägg och en girig skuldförenklingsalgoritm som räknar ut det minsta antalet transaktioner som krävs för att göra upp hela gruppens mellanhavanden, plus påminnelser med en atomärt skyddad nedkylning.
Vad projektet visarVisar att jag kan lösa ett riktigt algoritmproblem, inte bara bygga CRUD, och hantera race conditions korrekt med atomära databasoperationer.
DetaljerSkuldförenklingsalgoritmGrupper & delade utläggAtomär påminnelse-cooldownPush- & e-postnotiserSchemalagda påminnelser
TeknikLaravel 13PHP 8.3Inertia.jsVue 3PostgreSQLPestLarastanTailwind v4Render
ProblemAtt slå på och av funktioner i produktion utan att kunna kontrollera vem som godkänner det, spåra vad som ändrades, eller rulla tillbaka snabbt är farligt i en verksamhet med flera miljöer och flera personer inblandade.
LösningJag byggde en Laravel-baserad feature-flag-kontrollpanel à la LaunchDarkly: projekt-scopade API-nycklar, deterministisk rollout-hashning, ett draft/publish-flöde per miljö med tvåpersonersgodkännande för kritiska flaggor, en "break-glass"-nödöppning, och en omutlig audit-logg med kontrollsummekedja.
Vad projektet visarVisar att jag kan designa styrning och behörighet för ett verktyg andra utvecklare litar på i produktion, inte bara bygga funktioner — governance, spårbarhet och race-condition-säkerhet är förstaklassmedborgare, inte eftertankar.
DetaljerRBAC per projektTvåpersonersgodkännandeOmutlig audit-kedjaDeterministisk rollout-hashningBreak-glass-nödöppning
TeknikLaravel 12PHP 8.3PostgreSQLPHPUnitPintGitHub ActionsRender
Vill du se hur ditt projekt skulle brytas ner?
Skicka nuläge, mål och det som är oklart. Jag återkommer med ett konkret första steg och vad som bör byggas först.