Backend- och API‑utveckling
Motorn bakom din app eller webbplats
Den del användarna aldrig ser: där data lagras, vilka reglerna är och hur andra system får kommunicera med den.
Utvalt arbete som visar den här tjänsten.
-
Utformade och drev 6 ETL/ELT‑pipelines
Utformade och drev 6 ETL/ELT-pipelines (BigQuery, MSSQL, PostgreSQL) och kortade ett manuellt jobb på 3 timmar till under 20 minuter med daglig synk.
-
Levererade 8 Power BI‑projekt med handböcker
Levererade 8 analysprojekt i Power BI (Node.js-API, Python FastAPI) med fullständiga manualer och gjorde rapportgenereringen 60 % effektivare.
-
Styrde full stack‑utvecklingen av GIS‑kartor
Ledde fullstackutvecklingen av GIS-kartor (PostgreSQL, Mapbox, React, Node.js) och levererade en integrerad, utbyggbar kärna i plattformen.
-
Ledde över 30 GIS‑projekt från bygge till support
Ledde utveckling, driftsättning och support av 30+ GIS-projekt med PostgreSQL, Python, GDAL, ArcGIS, PostGIS och Mapbox genom hela livscykeln.
-
Utvecklade ett rapportsystem för dataanalys
Byggde ett rapporteringssystem för dataanalys i Python som ökade de kvartalsvisa mjukvaruintäkterna med 400 % genom tydliga PDF-rapporter i rätt tid.
-
En sjöfartsplattform byggd i rena skikt
Separerade appen, gränssnittet och databasen så att var och en kan ändras utan att de andra två går sönder, och samlade affärsreglerna på ett ställe.
-
Utformade en JSON‑väg rakt från Postgres till API
Utformade direkt vidarebefordran av JSON: PostgreSQL-funktioner returnerar komplett JSON som Go-API:t skickar oförändrad, så frontenden frikopplas från schemat.
-
Byggde växling av organisationskontext
Byggde organisationsbyte med localStorage och spegling i servercookie, så att användare agerar som hanterade organisationer med minsta möjliga behörighet.
-
Migrerade API:t till Huma v2 med 100 % paritet
Migrerade HTTP-API:t från Fiber till Huma v2 — 649 sökvägar, 760 operationer — med 100 % paritet mellan registrerade rutter och publicerad OpenAPI-beskrivning.
-
Genererade API‑kontraktet utåt från databasen
Genererade API-kontraktet från databasen och utåt — OpenAPI, en typad TypeScript-klient, mock-hanterare och UI-gränser — med en kontroll i varje steg.
-
Byggde e‑post med failover och leveransloggning
Byggde e-post som plattformsförmåga: tre leverantörer med failover, leveranswebhooks, loggning av utskick och leveranser, mallar och kampanjutskick.
-
Utformade ett funktionsbaserat skikt i PostgreSQL
Utformade ett funktionsbaserat datalager i PostgreSQL — 1 275 lagrade funktioner i 34 scheman — där databasen själv upprätthåller åtkomstgränsen.
-
Implementerade en katalogstyrd djupsammanslagning
Implementerade en katalogstyrd djupsammanslagning av lagrade JSON-inställningar som förhindrar krascher av saknade nycklar när schemat utvecklas.
-
Härdade applikationen med nonce‑baserad CSP, HSTS
Härdade appen med noncebaserad CSP, HSTS, SameSite-cookies, databasroller med minsta möjliga behörighet och omkontroll av rättigheter på serversidan.
-
Fattade plattformens tekniska grundbeslut
Lade fast plattformens grundbeslut i november 2025 — skiktningen, databascentrerad dataåtkomst och kravet på noll varningar — och de gäller än i dag.
-
Byggde och underhöll Django‑appar för IPTV
Utvecklade och underhöll Django-webbapplikationer för en IPTV-plattform och levererade funktioner samtidigt som prestanda och stabilitet förbättrades.
-
Byggde en testsvit för Go, SQL och webbläsare
Byggde en skiktad automatiserad testsvit — 981 Go-tester, 543 frontendspecar och 494 SQL-beteendetester — med mutations-, egenskaps- och tillgänglighetsgrindar.
-
Byggde åtkomsträttigheter via Stripe och appköp
Byggde lagret för betalningar och rättigheter — Stripe med köp i appen hos Apple och Google — som styr katalog, sökning och export utifrån en åtkomstmodell.
-
Flyttade långsamt arbete till en jobbkö i River
Flyttade långsamt arbete från anropsvägen till en jobbkö i River: 15 workermoduler, 8 schemalagda uppgifter och 20 underhållsjobb i pg_cron.
-
Byggde egen felövervakning och spårning
Byggde egen felövervakning och OpenTelemetry-spårning — sanering, spikdetektering, symbolisering och heartbeat — bakom 11 operatörsvyer.
-
Byggde hastighetsbegränsning som stänger vid fel
Byggde skydd mot missbruk som stänger vid fel: 22 Redis-baserade hastighetsbegränsare, Cloudflare Turnstile, idempotenta anrop och ursprungslås vid ingången.
-
Byggde en lojalitetsplånbok, ligor och märken
Byggde lojalitets- och anseendesystemet — 67 funktioner över en huvudbok med 31 tabeller, ligor, märken och en butik — med radlåsning på saldot.
-
Byggde socialt skikt: inlägg, flöde och grupper
Byggde plattformens sociala lager — inlägg, flöde, grupper, omnämnanden, följargraf och en översikt över bemärkelsedagar — på samma funktionsbaserade datalager.
-
Byggde rekryterings- och karriärytor för sjöfolk
Byggde jobbmarknadsplatsen och karriärytan för sjöfolk — 151 lagrade funktioner i 48 tabeller — som matchar lediga tjänster mot dokumenterade kvalifikationer.
-
Byggde en databasdriven CV‑generator
Sex format, tre språk och fem teman kommer ur en enda databas, och en rättad mening rättas en gång.
-
Gav generatorn 964 tester och 92 % täckning
Pipelinen kan köras om mot en databas i drift utan oro, vilket är det som över huvud taget gör inkrementellt innehållsarbete möjligt.
-
Aktiverade varje lintregel på felnivå
Lintern körs med full styrka och noll fynd, och varje avvikelse är dokumenterad på den rad där den görs.
-
Byggde in en QR‑kodare på 522 rader
Antalet beroenden vid körning stannade på två, och kodaren är den enda komponenten som projektet bär med sig i sitt eget källträd.
-
Flyttade varje sträng till ett innehållsträd
Texterna går nu att redigera utan att röra koden och att jämföra mellan språk genom att räkna. Priset är att ett nytt språk nu läggs till i ett entydigt steg i…
-
Införde strikt samtidighet i Swift 6 ovanpå C
Appen kompilerar med fullständig strikt samtidighetskontroll utan några undertryckta varningar, och händelseordningen är en strukturell egenskap snarare än en…
-
Skrev en parser som verifierar varje FFI‑anrop
Den feltyp som orsakade den ursprungliga kraschen kan inte återkomma, eftersom en inaktuell referens nu är ett byggfel i stället för ett körtidsfel.
-
Tog i bruk den oanvända halvan av kärnan
Den tidigare onådda hälften av kärnan körs av tester mot det riktiga biblioteket, och wrappern har det högsta golvet i projektet.
Är det här arbetet du behöver få gjort, är nästa steg ett samtal.
Berätta om problemet, så säger vi ärligt om vi är rätt personer.