Backend- og API‑utvikling
Motoren bak appen eller nettstedet ditt
Delen brukerne aldri ser: hvor dataene ligger, hvilke regler som gjelder, og hvordan andre systemer får lov til å snakke med den.
Utvalgt arbeid som viser denne tjenesten.
-
Designet og driftet 6 ETL/ELT‑pipelines
Designet og drev 6 ETL/ELT-pipelines (BigQuery, MSSQL, PostgreSQL) og kortet en manuell jobb på 3 timer ned til under 20 minutter med daglig synk.
-
Leverte 8 Power BI‑prosjekter med veiledninger
Leverte 8 analyseprosjekter i Power BI (Node.js-API, Python FastAPI) med fullstendige brukerveiledninger og gjorde rapportgenereringen 60 % mer effektiv.
-
Styrte fullstack‑utviklingen av GIS‑kart
Styrte fullstack-utviklingen av GIS-kart (PostgreSQL, Mapbox, React, Node.js) og leverte én integrert, utvidbar kjerne i plattformen.
-
Ledet 30+ GIS‑prosjekter fra utvikling til støtte
Ledet utvikling, produksjonssetting og støtte for over 30 GIS-prosjekter med PostgreSQL, Python, GDAL, ArcGIS, PostGIS og Mapbox gjennom hele livsløpet.
-
Utviklet et rapporteringssystem for dataanalyse
Bygde et rapporteringssystem for dataanalyse i Python som økte den kvartalsvise programvareomsetningen med 400 % med tydelige PDF-rapporter i rett tid.
-
En maritim plattform bygd i ryddige lag
Skilte appen, grensesnittet og databasen fra hverandre, slik at hver del kan endres uten å ødelegge de to andre, og holdt forretningsreglene samlet på ett sted.
-
Designet JSON rett fra Postgres til API‑et
Designet en JSON-passthrough der PostgreSQL-funksjoner returnerer komplett JSON som Go-API-et videresender uendret, og koblet frontenden løs fra skjemaet.
-
Bygde bytte av organisasjonskontekst for brukerne
Bygde organisasjonsbytte med localStorage speilet i en cookie på serveren, slik at brukere kan opptre som administrerte organisasjoner med minste privilegium.
-
Migrerte API‑et til Huma v2 med 100 % paritet
Migrerte HTTP-API-et fra Fiber til Huma v2 — 649 stier, 760 operasjoner — med 100 % samsvar mellom registrerte ruter og den publiserte OpenAPI-beskrivelsen.
-
Genererte API‑kontrakten med databasen som kilde
Genererte API-kontrakten fra databasen og utover — OpenAPI, en typet TypeScript-klient, mock-handlere og UI-grenser — med en kontroll ved hvert ledd.
-
Bygde e‑post med failover og leveringslogging
Bygde e-post som en plattformfunksjon: tre leverandører med failover, webhooks for levering, logging av sending og levering, maler og kampanjeutsendelser.
-
Designet et funksjonsbasert datalag i PostgreSQL
Designet et funksjonsbasert datalag i PostgreSQL — 1 275 lagrede funksjoner i 34 skjemaer — der databasen selv håndhever tilgangsgrensen.
-
Implementerte en katalogstyrt deep merge
Implementerte katalogstyrt dyp fletting av lagrede JSON-innstillinger, som hindrer krasj ved manglende nøkler når skjemaet utvikler seg.
-
Herdet applikasjonen med nonce‑basert CSP, HSTS
Herdet appen med noncebasert CSP, HSTS, SameSite-cookies, databaseroller etter prinsippet om minste privilegium og ny kontroll av rettigheter på serversiden.
-
Tok plattformens grunnleggende tekniske valg
Tok plattformens grunnleggende beslutninger i november 2025 — lagdelingen, databasesentrert datatilgang og kravet om null advarsler — og de står seg fortsatt.
-
Bygde og vedlikeholdt Django‑apper for IPTV
Utviklet og vedlikeholdt Django-webapplikasjoner for en IPTV-plattform, leverte nye funksjoner og forbedret samtidig ytelse og stabilitet.
-
Bygde en testsuite for Go, SQL og nettleser
Bygde en lagdelt automatisert testsuite — 981 Go-tester, 543 frontend-spesifikasjoner og 494 SQL-atferdstester — med mutasjons-, egenskaps- og UU-kontroller.
-
Bygde tilgangsrettigheter for Stripe og appkjøp
Bygde laget for betaling og rettigheter — Stripe med kjøp i app via Apple og Google — som styrer tilgang til katalog, søk og eksport ut fra en tilgangsmodell.
-
Flyttet tregt arbeid over i en River‑jobbkø
Flyttet tidkrevende arbeid ut av forespørselsløpet og over i en jobbkø i River: 15 arbeidermoduler, 8 planlagte oppgaver og 20 vedlikeholdsjobber i pg_cron.
-
Bygde egen feilovervåking og sporing
Bygde egen feilovervåking og OpenTelemetry-sporing — rensing, oppdaging av topper, symbolisering og hjerteslag — bak 11 visninger for operatører.
-
Bygde fail‑closed hastighetsgrenser mot misbruk
Bygde misbruksvern som stenger ved feil: 22 Redis-baserte hastighetsbegrensere, Cloudflare Turnstile, idempotente forespørsler og en origin-lås på inngangen.
-
Bygde en lojalitetslommebok, ligaer og merker
Bygde lojalitets- og omdømmesystemet — 67 funksjoner over en hovedbok på 31 tabeller, ligaer, merker og en butikk — med radlåsing på saldoen.
-
Bygde det sosiale laget: innlegg, feed og grupper
Bygde plattformens sosiale lag — innlegg, feed, grupper, nevninger, en følgergraf og et sammendrag av merkedager — på det samme funksjonsbaserte datalaget.
-
Bygde arbeidsflater for rekruttering og sjøfolk
Bygde jobbmarkedsplassen og karriereområdet for sjøfolk — 151 lagrede funksjoner i 48 tabeller — som matcher stillinger med dokumenterte kvalifikasjoner.
-
Bygde en databasedrevet CV‑generator
Seks formater, tre språk og fem temaer kommer ut av én database, og en rettet setning rettes én gang.
-
Holdt generatoren til 964 tester og 92 %
Pipelinen kan kjøres på nytt mot en database i drift uten frykt, og det er det som i det hele tatt gjør trinnvist innholdsarbeid mulig.
-
Aktiverte alle linterregler som feil
Linteren kjører med full styrke og null funn, og hvert avvik er dokumentert på linjen der det tas.
-
Bygde inn en QR‑enkoder på 522 linjer
Antallet avhengigheter under kjøring ble værende på to, og koderen er den eneste vendorede komponenten i prosjektet.
-
Flyttet hver tekststreng inn i et innholdstre
Teksten kan nå redigeres uten å røre koden og sammenlignes på tvers av språk ved å telle. Prisen er at det å legge til et språk nå er entydig og ikke gradvis —…
-
Tok i bruk streng samtidighet i Swift 6 over C
Appen kompilerer med fullstendig streng samtidighetskontroll uten undertrykkinger, og hendelsesrekkefølgen er en strukturell egenskap og ikke et håp.
-
Skrev en parser som verifiserer hvert FFI‑kall
Den feiltypen som ga den opprinnelige krasjen, kan ikke komme tilbake, fordi en utdatert referanse nå er en byggefeil og ikke en kjøretidsfeil.
-
Nådde den ubrukte halvdelen av kjernen
Den halvparten av kjernen som tidligere ikke var nådd, kjøres nå av tester mot det ekte biblioteket, og wrapperen har den høyeste minstegrensen i prosjektet.
Er dette arbeidet du trenger gjort, er neste skritt en samtale.
Fortell oss problemet, så sier vi ærlig fra om vi er de rette folkene.