ARBETET

Tjugoåtta system, uppriktigt beskrivna.

Skrivna utifrån källkoden, inte ur minnet - vad vart och ett gör, vad det är byggt på, vad det pratar med och vilken del som var riktigt svår.

28
system beskrivna här i detalj
90+
plattformar levererade från början till slut
60+
tredjepartsintegrationer i dem
17
språk på en och samma plattform
Ingen kund namnges någonstans på den här webbplatsen. Varje system nedan beskrivs utifrån bransch, storlek och funktion, vilket räcker för att bedöma plattformarnas arkitektur. I ett samtal kan jag gå betydligt djupare och visa dig mycket av det direkt.
SJUKVÅRD OCH KLINIK
012026 - PRESENT
PROJEKT 01

Operativsystem för en vårdkoncern med femton kliniker

Ett enda Django-projekt som ersätter åtta frikopplade verktyg i femton kliniker: den tvåspråkiga publika webbplatsen, en butik för tjänster och abonnemang, CRM för patienter och leads, spårning av laboratorieordrar med fraktsedlar, bokföring som styr kassaregisterhårdvara, tidsrapportering för personalen som matas av en skrivbordsklient, intern chatt och annonsrapportering - allt bakom en enda admin med klinikavgränsade behörigheter över tio roller.

BYGGT MED
DjangoPythonPostgreSQLMariaDBRedisDockerNGINXUbuntu
INTEGRERAT MED
StripeDatecs fiscal printersTrustedFormSMSAPIAnthropicMeta PixelMeta Conversions APITikTok PixelGoogle Tag ManagerGoogle AnalyticsFrankfurterreCAPTCHAParsliCourierManagerSMTPGoogle Sheetsip-apiPlausibleOutbrainTaboolaMeta Marketing APISoftOne / Integra ERP
STACK
Django 5.2, PostgreSQL och MariaDB, serverrenderat, ingen SPA. Runt 120 modeller över fjorton appar och 170 mallar. Driftsatt på ett delat webbhotell under Passenger, med cron i stället för Celery eftersom ingen bakgrundsprocess överlever där.
DET SVÅRA
Conversions API på serversidan med deduplicering mot webbläsarens Pixel via ett delat event-id, hashad persondata, avfyrad i en bakgrundstråd och med fail open. Drivrutiner för fiskala skrivare med ett nedgraderat läge utan drivrutin, så att en onåbar enhet markerar kvittot som väntande i stället för att blockera försäljningen. Ett API med bearer-token för en Windows-klient för tidsrapportering utanför repot, som laddar upp ögonblicksbilder av aktiviteten varje minut. Ett rollsystem som löses efter prioritet - superuser, sedan grupp, sedan klinikpersonalpost - och driver tio olika dashboards från en enda kodbas.
Läs hela fallstudien
022026
PROJEKT 02

Plattform för AI-tolkning av röntgenbilder

Patienter laddar upp en panoramaröntgen och får tillbaka AI-fynd med konfidensvärden, en prissatt behandlingsplan och ett valfritt andra utlåtande; kliniker får en portal bakom abonnemang och en plats i katalogen. Fyra separata ytor - publik webbplats, patientapp, klinikportal och admin - i en enda Django-installation.

BYGGT MED
DjangoPythonPostgreSQL
INTEGRERAT MED
StripeMeta PixelMeta Conversions APIGoogle Tag ManagerGoogle Placesip-apiOpenAI-compatible vision APIOpenStreetMap
STACK
Django 5.2, PostgreSQL, Stripe, sidbyggaren GrapesJS i adminen. Tjugofem modeller över fyra appar med modeller.
DET SVÅRA
AI-backenden ligger bakom en enda normaliserad resultattyp med tre utbytbara implementationer - mock, hostat API och självhostat - som väljs med en enda miljövariabel, så hela produkten går att köra från början till slut utan någon AI-leverantör inkopplad och utan kodändringar. En klinisk utdatakedja: uppladdning → analys → fynd → behandlingsplan → rader, där varje fynd bär sitt eget konfidensintervall. Middleware för first-touch-attribution som fångar klick-id:n från fyra annonsplattformar till en rapport över tratten från lead till betalande kund.
032025
PROJEKT 03

Webbplats och patientportal för en klinik inom medicinsk turism

Marknadsföringssajt, publik tidbokningskalender och självbetjäningsportal för patienter, för en klinik som säljer till internationella patienter, på åtta språk. Kalendern visar verklig tillgänglighet utan att läcka något - bokade tider visas bara som otillgängliga.

BYGGT MED
DjangoPythonMySQLNGINX
INTEGRERAT MED
Meta PixelreCAPTCHASMTPip-api
STACK
Django 5.2, MySQL, modeltranslation i tre appar, CKEditor 5, GrapesJS för landningssidor.
DET SVÅRA
En tillståndsmaskin från bokningsförfrågan till godkännande: en besökares förfrågan ligger kvar som väntande tills personalen godkänner den, varpå en patientpost skapas eller matchas och en riktig bokning skapas. Varje lead sparar sina svar två gånger - som JSON och som enskilda rader - tillsammans med IP, user agent, referrer, geografi och hela uppsättningen UTM- och Meta-klick-id:n. Kampanjernas landningssidor monteras utanför routingen med språkprefix, så betald trafik landar aldrig på en språkomdirigering.
BOKNING, HOTELL OCH UTHYRNING
042026 - PRESENT
PROJEKT 04

Plattform för att förebygga och återhämta sig från utbrändhet

Ett gratis quiz om risk för utbrändhet och dagliga check-ins leder vidare till ett abonnemang i tre nivåer som kombinerar en AI-coach med kurser i stressvetenskap, guidade ljudspår, dagboksskrivande, gemenskapscirklar och betald enskild coachning över inbäddad video. Ett parallellt B2B-spår säljer platser till arbetsgivare med coachningsbudget, och ett ambassadörsprogram i flera nivåer betalar provision på värvningar. Django-API, React-webbapp, statisk marknadsföringssajt och en Flutter-klient, i ett och samma repository.

BYGGT MED
DjangoPythonPostgreSQLCeleryRedisReactViteTailwind CSSFlutterDartDocker
INTEGRERAT MED
StripeSmartBillSMSAPIFirebase Cloud MessagingOpenAIAnthropicMeta PixelMeta Conversions APITikTok PixelGoogle Tag ManagerGoogle AnalyticsZoom Video SDKGoogle OAuthreCAPTCHAFacebook LoginLinkedIn OAuthSMTPGoogle Sheetsip-apiSentryPlausibleMicrosoft ClarityAmazon LoginApple Sign InCookiebotExchangeRate-APIGoogle PerspectiveMyMemoryTikTok Login
STACK
Django 5.2 med DRF och JWT, PostgreSQL, Celery och Redis, Argon2-hashning, fyrtionio lokala appar. React med Vite och Tailwind i frontend, Flutter för mobil. Sentry, gunicorn med gevent.
DET SVÅRA
En rekommendationsmotor som graderar sju nervsystemstillstånd utifrån en check-in, tillämpar hårda lämplighetsgrindar, komprimerar prioritet till ett sexgradigt band så att sammanhang slår popularitet, och därefter samplar med softmax i stället för att ta argmax - så att hela katalogen förblir nåbar i stället för att falla ihop till samma tjugo poster. En fjärde plats är reserverad för upptäckt och samplas efter hur nytt innehållet är. Den kör råa frågor direkt mot databasdrivrutinen i stället för via ORM:en, eftersom den körs på varje skärm. Retrieval är förankrad i ungefär trettio tusen strukturerade lösningar utvunna ur omkring nittiofem böcker, med en prompt som förbjuder modellen att svara utifrån sin egen allmänna kunskap och en uttrycklig krisgren. En Monte Carlo-rigg kör den riktiga motorn över syntetiska sessioner - femtio tusen check-ins i en körning, sjuttio tusen balanserade sessioner i en annan - och kontrollerar att inget kristillstånd får ett olämpligt kort och att inget kort är onåbart. Den avslöjade också en verklig lucka i detekteringen, vilket är precis vad en sådan rigg är till för. Val av leverantör och varje API-nyckel hämtas från en tabell som går att redigera i adminen innan miljövariabler används, så leverantörer och nycklar byts utan deploy.
Läs hela fallstudien
052026
PROJEKT 05

Bokning av villor och retreater, synkad över fyra OTA-kanaler

Direktbokning och betalning för tre boenden på Teneriffa, synkade med Airbnb, Booking.com, Vrbo och Agoda via en channel manager, med logik för handpenning, tokeniserad incheckning online, ett köpflöde för platser på retreater och ett API för att ta emot leads, matat av en scraper.

BYGGT MED
DjangoPythonMySQLPostgreSQLCeleryRedisDocker
INTEGRERAT MED
StripeSmoobuSMSAPIMeta PixelMeta Conversions APIGoogle Tag ManagerGoogle AnalyticsreCAPTCHASMTPGoogle SheetsPlausibleMaxMind GeoLite2ipapi.co
STACK
Django 5.1, MySQL i produktion med PostgreSQL och SQLite som reserv i utveckling, Celery och Redis med eager-fallback, utelåsning med django-axes, profilering med Silk, GrapesJS-byggare. Fyrtio modeller över sex appar.
DET SVÅRA
Slutförandet av betalningen är medvetet dubblerat och idempotent - samma rutin körs både från Stripe-webhooken och från retursidan och avbryter tidigt om bokningen redan är betald, så att en missad webhook inte kan tappa bort en betald bokning. Channel managern erbjuder inget system för webhook-signaturer, så endpointen autentiseras med en hemlighet i URL-sökvägen, med ett test som sätter den till tom för att bevisa att den gör fail closed. En tillståndsmaskin för bokningar routar bekräftade vistelser till direktkanalen och blockeringar till en separat kanal; boendet utan kanal-id matchas i stället lokalt på slug. Varje utgående e-postmeddelande sparas innan det skickas, av en egen e-postbackend.
062025
PROJEKT 06

Bokning för lägenhetshotell med full efterlevnad av rumänska skatteregler

Direktbokning med Stripe, OTA-synk och hela uppsättningen rumänska skattedokument - faktura, proformafaktura, kvitto, inbetalning, kassakvitto och betalningsorder - utfärdade via en bokföringsleverantör. Django-backenden är den färdiga delen; separata mobilappar för personal och gäster byggdes mot ett API som backenden ännu inte exponerar, och är ofärdiga.

BYGGT MED
DjangoPythonMySQLCeleryRedisFlutterDarthtmxAlpine.jsTailwind CSS
INTEGRERAT MED
StripeSmartBillSmoobuFirebase Cloud MessagingBrevoSendGridGoogle Tag ManagerGoogle AnalyticsreCAPTCHAPlausible
STACK
Django 5.1, MySQL, Celery med eager-fallback där Redis är valfritt, Unfold-admin med en studio inlagd i repot, HTMX och Alpine ovanpå Tailwind. Runt fyrtio modeller över tio appar. Flutter för båda mobilklienterna, JWT i säker lagring.
DET SVÅRA
Ett pågående köp i kassan hålls som en tillfällig bokning och befordras till en riktig först när Stripe bekräftar sessionen, så att avbrutna köp aldrig binder upp lager. Sex olika typer av skattedokument delar gemensamma mixins för parter och rader i stället för att vara en enda fakturamodell med en typflagga. Gästposter stäms av mellan kanaler genom ett lager med en kanonisk gäst, med separata register för privatpersoner och företag, så att samma person som kommer via en OTA och via en direktbokning är en enda post. Varje integrationshemlighet hämtas först från databasen med en cache på sextio sekunder, så nycklar kan bytas i drift.
072025
PROJEKT 07

Bokning av hyrbil med bekräftelse via e-postkod

En fordonsflotta som går att filtrera på märke, typ, växellåda, drivmedel, antal platser, pris och ort, med vanliga uthyrningar och paket till fast pris. Betalningen sker vid upphämtning i stället för online, så hela bekräftelseproblemet löses med en verifieringskod i stället för en betalgateway.

BYGGT MED
DjangoPythonMySQLTailwind CSSAlpine.js
INTEGRERAT MED
Google AnalyticsFrankfurterreCAPTCHASMTPWhatsApp click-to-chatexchangerate.host
STACK
Django 5.0, MySQL, modeltranslation på åtta språk, Tailwind och Alpine från CDN utan byggsteg. Trettioåtta modeller.
DET SVÅRA
Bokningsbekräftelse med en sexsiffrig kod via e-post, med rate limiting per IP och ett tak på fem försök, femton minuters giltighet och en spärrtid för omsändning. Signerade tidsbegränsade tokens ger en anonym gäst tillgång till sin egen bokningssida i tjugofyra timmar utan konto. Priset räknas om på servern vid varje sparning, utifrån en tabell med fem dygnsintervall korsad med försäkringsnivå, och rabatten läggs bara på uthyrningens delsumma - inga värden från klienten tas för givna.
LEADGENERERING, TELEFONI OCH TRADING
082026
PROJEKT 08

Multi-tenant-SaaS som säljer mjukvaruabonnemang, med marknadsföringstjänster ovanpå

En enda Django-installation som betjänar plattformens egen webbplats, varje kunds subdomän och varje kunds egen domän. Varje tenant får den del av backoffice som plattformens administratör ger dem: en sidbyggare, en byggare för flerstegsformulär med SMS-verifiering, en butik med betalningar och skattefakturering, fraktsedlar och fulfilment, ett CRM som täcker ordrar, konsultationer, ärenden, lojalitet och OCR av fakturor, first-touch-attribution och en kunddashboard. Leadgenerering är en av modulerna, inte produkten.

BYGGT MED
DjangoPythonMySQLRedisCeleryReactViteTypeScriptDocker
INTEGRERAT MED
StripeEuPlătescSmartBillFGOFAN CourierSamedayCargusGLSDPDDHLSinapseriaFulfiloHelpshipTrustedFormTCPA & DNC scrubbingSMSAPITwilioWhatsApp Business APIAnthropicAzure OCRMeta PixelMeta Conversions APITikTok PixelGoogle Tag ManagerGoogle AnalyticsreCAPTCHAcPanel and WHMRRDBliveCallManagerTurnstileCaddyZoom
STACK
Django 5.1, MySQL, Redis och Celery, DRF med JWT och OpenAPI, Unfold-admin, modeltranslation och parler. En React 19-applikation byggd med Vite och levererad färdigbyggd. Fjorton appar, sju språk med kompletta översättningskataloger.
DET SVÅRA
Leadscoring med en språkmodell och webbsökning: formulärsvar, UTM:er, klick-id:n, autentiseringsresultat och status i spärregistret sätts ihop till ett underlag och placeras i ett poängband med en motivering och en rekommenderad åtgärd, med en nyckel per kund. En efterlevnadsstack i tre delar - full tvätt med detektering av linjetyp och mobilnummer, kontroll mot processbenägna anmälare, och uppslag av omtilldelade nummer mot ett samtyckesdatum. Tenanten avgörs utifrån Host-headern med en cache på fem minuter, och varje formulärinlämning kontrolleras på nytt mot värdnamnets kund, så att ett lead som hamnar hos fel tenant är strukturellt omöjligt. Formulärbyggaren sparar en HMAC av varje verifieringskod i stället för själva koden, och varje samtyckesruta skriver en oföränderlig post med den exakta formuleringen, IP och URL.
092026
PROJEKT 09

Leadmarknadsplats i USA med en scoringpipeline över trettio leverantörer

Betald trafik landar på ett quiz; det lead som uppstår poängsätts mot ungefär trettio leverantörer av bedrägeri-, efterlevnads- och intentionsdata, routas till en köpare efter kapacitet och geografi, skickas in i en dialer för direktöverkoppling, levereras till köparens CRM och faktureras. Köparna sköter allt själva i en portal med plånbok; mediaköpare får dashboards över kostnad per lead.

BYGGT MED
DjangoPythonPostgreSQLClickHouseRedisCeleryWagtailDocker
INTEGRERAT MED
StripeConvosoGoHighLevelHubSpotPipedrivemonday.comZapierTrustedFormMaxMind minFraudFingerprintJSTwilioBrevoOpenAIAnthropicMeta PixelMeta Conversions APITikTok PixelGoogle Tag ManagerGoogle AnalyticsGoogle OAuthreCAPTCHAFacebook LoginMicrosoft OAuthip-apiPlausibleOutbrainTaboolaRRDBliveGoogle AdsDialRight (CallerID Reputation)Disposable-email blocklistGravatarMaxMind GeoIP2Meta Marketing APIMicrosoft UETSalesforceipapi.coipify
STACK
Django 5.2 med Wagtail, två datalager - PostgreSQL för operativt tillstånd och ClickHouse som brandslang för spårningsdata - Redis, Celery med beat och Flower, DRF plus ett handskrivet JWT-lager för mobilen. Fyrtiosex modeller enbart i kärnappen.
DET SVÅRA
Varje leverantör mappas till en av tre delpoäng - nåbarhet, äkthet, köpintention - som körs parallellt genom en trådpool och medelvärdesbildas till ett sammansatt betyg med vikter som går att ställa i adminen. Adaptrar som felar eller hoppas över faller bort ur nämnaren i stället för att ge noll poäng, och en adapter som blockerar tvingar direkt fram det lägsta betyget. Signaluppsättningen omfattar beteendebiometri, TLS-fingerprinting, scrolldjup och ifyllnadstakt i formuläret vid sidan av tre delsignaler från språkmodeller. Routingen till köpare filtrerar på kredit, öppettider, daglig och veckovis kapacitet, vertikal och geografi, och skiljer sedan lika fall åt på det senaste dygnets belastning innan prioritet avgör. Varje utgående anrop till en leverantör skriver en loggrad med endpoint, status och sammanfattning av svaret, just för att leverantörskostnaden per lead ska kunna stämmas av.
Läs hela fallstudien
102026
PROJEKT 10

En mobilklient för personalen som bygger sina egna skärmar

En Flutter-adminapp för leadmarknadsplatsen som renderar list-, detalj- och redigeringsskärmar för vilken modell som helst i Djangos admin utan en enda ändring i Flutter - den läser adminregistret över REST och genererar formulären från schemat.

BYGGT MED
FlutterDartDjangoPython
STACK
Flutter med Riverpod, Dio och go-router, säker lagring för tokens. En Django-app vid sidan som exponerar adminregistret som REST.
DET SVÅRA
Behörigheterna implementeras inte en gång till: API:et mappar HTTP-verben mot Djangos egna behörigheter för att visa, lägga till, ändra och ta bort, och sökning, sidindelning och sortering i listorna kommer direkt från den konfiguration varje adminklass redan har. Att lägga till en modell i Djangos admin lägger till den i mobilappen. En systerapp för köpare speglar webbapplikationens fjorton temauppsättningar per kund, läser den aktiva vid inloggning och cachar den så att fel varumärke inte blinkar till vid kallstart.
112026
PROJEKT 11

Plattform för tradingsignaler med en egenutvecklad konfluensmotor

En abonnemangstjänst som publicerar tradingidéer över fem desks med tvingande regler för positionsstorlek, genererade av en teknisk konfluensmotor med nyhetssentiment bedömt av en modell, levererade genom en webbapp och tre Flutter-klienter - mobil, macOS och Windows - som delar en kodbas. Nya medlemmar når inte dashboarden förrän de har verifierat sin e-post och fyllt i ett riskformulär.

BYGGT MED
DjangoPythonMySQLRedisCeleryWagtailFlutterDartWeb3.js
INTEGRERAT MED
StripePayPalPaddleTwilioFirebase Cloud MessagingAnthropicGoogle Tag ManagerGoogle AnalyticsTwelve DataSMTPPlausibleBNB ChainAlpha VantageCoinGeckoMarketauxNewsAPIexchangerate.host
STACK
Django 5.2 med Wagtail, MySQL, Redis, Celery med beat, Channels och Daphne för WebSockets, DRF med JWT, pandas och numpy, web3 för kryptospåret. Flutter och Dart för mobil- och skrivbordsklienterna, ett gemensamt lib/ för alla tre. Sjutton konfigurerade språk.
DET SVÅRA
Sju oberoende indikatoravläsningar per tidsram, och en tidsram räknas som samstämmig först när minst fem av de sju pekar åt samma håll - därefter bekräftelse över flera tidsramar ovanpå, med valfria grindar för candlesticks och nyheter, och stoppnivåer och mål härledda ur ATR. Varje genomgång skriver en revisionsrad oavsett om den gav en signal eller inte, och dry-run är förvalet. Kryptobetalningsspåret håller ingen privat nyckel på servern: en schemalagd uppgift bevakar kedjan och letar efter överföringar till en mottagaradress, matchar väntande insättningar på belopp och bekräftar efter tolv bekräftelser. Två middleware ovanpå varandra gör produkten onåbar tills onboardingen verkligen är klar.
HANDEL, ERP OCH INTERNA VERKTYG
122025
PROJEKT 12

E-handel för mode med fulfilment och skattefakturering

En butik för kläder och skor med varumärken, nästlade kategorier, storlekar och lagersaldo per variant med QR-koder, varukorg och kassa - och ett backoffice som skapar fraktsedlar och utfärdar skattefakturor, så att en order blir en försändelse och en faktura utan att man lämnar adminen.

BYGGT MED
DjangoPythonMySQLTailwind CSSAlpine.js
INTEGRERAT MED
PayPalSmartBillFAN CourierFrankfurterreCAPTCHA
STACK
Django 4.2, MySQL, Unfold-admin med en dashboard i Chart.js, modeltranslation på åtta språk, Tailwind och Alpine från CDN. Sextiotvå modeller över nio appar, sextiotre tabeller.
DET SVÅRA
Fulfilmentkedjan är verklig snarare än deklarativ: när en fraktsedel skapas loggas hela anropet, svaret och felet mot ordern, och faktureringen utfärdar dokument och krediteringar mot den. Prissättningen i två valutor sparar ett belopp i den ursprungliga valutan och ett i visningsvalutan som ett par, i stället för ett belopp och en kurs, så att en gammal order inte tyst räknas om när växelkursen rör sig.
132025
PROJEKT 13

ERP från offert till avtal till faktura för en inredningsstudio

Den publika portföljen är den lilla halvan. Backofficen förvandlar ett projekt till en prissatt offert rum för rum, offerten till ett rumänskt juridiskt avtal, och avtalet till proformafakturor, fakturor, betalningar och kvitton - och genererar kundens offert- och avtals-PDF:er internt.

BYGGT MED
DjangoPythonMySQL
INTEGRERAT MED
SmartBillGoogle AnalyticsFrankfurterlista-firme.inforeCAPTCHASMTP
STACK
Django 4.2, MySQL, Unfold-admin, ReportLab med ett eget registrerat typsnitt för PDF-sättningen. Femtiofem modeller.
DET SVÅRA
Avtalstexten är en strukturerad juridisk mall som numrerar sig själv, fryser mottagarens uppgifter vid undertecknandet och validerar att ett avtal kopplas till antingen en fysisk person eller ett företag, men aldrig båda. Offert-PDF:erna sätts rum för rum - åtta rumstyper, var och en med egen beskrivning, eget pris och egna foton - som ett ombrutet dokument snarare än en ifylld mall. Varje belopp sparas i båda valutorna, i parallella kolumner.
142025
PROJEKT 14

Tidsrapportering med en native skrivbordsklient för Windows

In- och utstämpling, raster, scheman per veckodag, förfrågningar om förflyttning mellan kontor, tidrapporter och rapportering till Excel - levererat som en Django-applikation plus en native skrivbordsklient, white-labelad och driftsatt för en vårdkoncern. De anställda har inga lösenord; en enda åtkomstkod autentiserar båda ytorna.

BYGGT MED
DjangoPythonMySQL
INTEGRERAT MED
SMTP
STACK
Django 5.2, MySQL, Unfold-admin med egna mallar för kalender och tidrapport. Skrivbordsklienten är Tkinter - runt 1 600 rader - paketerad med PyInstaller till en enda körbar fil och distribuerad via ett installationsprogram.
DET SVÅRA
Logiken för automatisk utstämpling är den intressanta delen: en session stängs vid sin sista heartbeat först när både den schemalagda arbetsdagens slut har passerat och ingen heartbeat har kommit på tio minuter - och en senare heartbeat med en tidsstämpel som visar att appen levde kan återuppliva en session som ett verkligt avbrott stängde. Det är ett problem med distribuerat tillstånd som hanteras ordentligt, i stället för ett nattligt cron-jobb som gissar.
152024
PROJEKT 15

Säljinriktat CRM för en designstudio

Ett fokuserat internt verktyg: prospekt spåras utifrån fastighetens egenskaper - typ av yta, användning, storleksintervall, antal rum, budget - med kontaktloggar per kanal, mötesbokning, proformafakturor som PDF och en dashboard över pipeline.

BYGGT MED
LaravelPHPMySQLViteTailwind CSSAlpine.js
INTEGRERAT MED
SMTP
STACK
Laravel 11 med Breeze, MySQL, Blade med Vite, Tailwind och Alpine, DomPDF. Elva modeller, arton migrationer.
DET SVÅRA
Inget arkitektoniskt ovanligt, och det ska inte låtsas något annat: det är ett litet, korrekt internt verktyg. Det substantiella är dashboarden över pipeline, som aggregerar antal per typ av yta och användning, fördelning över storleksintervall och genomsnittlig budget mot totalt och betalt proformavärde.
162025
PROJEKT 16

Kundportal för en byrå med ett verktyg från kod till diagram

En marknadsföringssajt med ett kundområde där kunderna följer de projekt som byggs åt dem - milstolpar, uppgifter, kommentarer, bilagor - plus ett verktyg enbart för personalen som gör om ett projekts modeller och routes till arkitekturdiagram och en layoutspecifikation.

BYGGT MED
DjangoPythonMySQLTailwind CSSAlpine.js
INTEGRERAT MED
OpenAIGoogle AnalyticsFigmareCAPTCHASMTPWordPress.com mShots
STACK
Django 4.2, MySQL, Unfold-admin, modeltranslation på tio språk, Tailwind och Alpine. Runt trettio modeller. Ett tillhörande plugin till designverktyget, utanför Djangos runtime.
DET SVÅRA
Pipelinen tar inklistrad källkod, genererar arkitektur- och flödesdiagram ur den och bygger sedan en specifikation över skärmar och färgpalett som ett plugin i designverktyget hämtar och ritar upp som riktiga redigerbara ramar. Det är ett litet verktyg, men det tar bort den minst roliga timmen i början av varje projekt.
172026
PROJEKT 17

Verktyg för generativt ljud, enbart standardbiblioteket

Ett internt verktyg för att generera ambient- och avslappningsljud via ett API för musikgenerering - en klient med nio kommandon, en lokal server och ett gränssnitt i webbläsaren - byggt för ljudbiblioteket i en wellnessprodukt.

BYGGT MED
Python
INTEGRERAT MED
Mubert
STACK
Enbart Pythons standardbibliotek. Inget ramverk, inga beroenden, inget byggsteg, runt 920 rader. Servern är standardbibliotekets egen HTTP-server med en trådad jobbkö.
DET SVÅRA
Den hanterar leverantörens autentisering i två nivåer korrekt - autentiseringsuppgifter på tjänstenivå för att skapa uppgifter på kundnivå, sedan kundnivåns för själva genereringen, cachade och återanvända - och behandlar genereringen som verkligt asynkron genom att polla varje jobb på en egen tråd med en timeout. Utan konfigurerade autentiseringsuppgifter stänger gränssnittet av genereringen och säger det, i stället för att fallera vid användningstillfället.
182021 - 2024
PROJEKT 18

En personlig tränares varumärkessajt, där träningsprogrammen är produkterna

Träningsprogrammen är innehållsobjekt som samtidigt fungerar som säljbara artiklar: varje program bär ett pris, en längd i dagar, en anteckning om kosttillskott, en nedladdningsbar PDF och en video. Runt dem ligger en butik för merch och pass, ett galleri för tränaren, omdömen, ett formulär för bokningsförfrågan och kassa via PayPal, på fyra innehållsspråk på ett delat webbhotell.

BYGGT MED
LaravelPHPMySQLLivewireTailwind CSSBootstrapjQueryJavaScriptApache
INTEGRERAT MED
PayPalGoogle AnalyticsSMTPElfsight
STACK
PHP och Laravel 8 med Jetstream och Livewire, MySQL, Blade-mallar, Laravel Mix som bygger Tailwind, Bootstrap, jQuery, Alpine och Sass. Tretton modeller, tjugonio migrationer, trettiotvå controllers, Apache på cPanel.
DET SVÅRA
Översättningen ligger i schemat i stället för i ett paket: modellerna för inlägg, butik, galleri och meny bär var för sig fyra parallella kolumnuppsättningar, en per språk, och rumänskan kom fem år efter lanseringen genom migrationer som breddar varenda en av dem. Det är en trubbigare lösning än en översättningstabell, och den har en verklig fördel - att läsa en översatt rad är samma fråga som att läsa en oöversatt, utan join och utan fallback-logik som kan bli fel. Värt att säga rakt ut: det här är en konventionell CRUD-monolit på en stack som har åldrats. Vad den visar är inte skicklighet utan att den har underhållits i det tysta i flera år efter överlämningen.
INDUSTRI, ENERGI OCH IDEELL SEKTOR
192025
PROJEKT 19

Flerspråkig katalog och utskicksmotor för en tillverkare inom trafiksäkerhet

Företagswebbplats och produktkatalog för en tillverkare av skyltar och vägutrustning, redigerbar i adminen på nio språk - byggd runt en egen motor för schemalagda massutskick med avstämning av studsar, eftersom kundens sändlista är den kommersiella tillgången.

BYGGT MED
DjangoPythonMariaDBBootstrapDockerNGINX
INTEGRERAT MED
Google AnalyticsreCAPTCHASMTPIMAP
STACK
Django 4.2, MariaDB, Jazzmin-admin med nästlade inlines, modeltranslation och Rosetta för att redigera översättningar i webbläsaren, Bootstrap och AOS. Trettio modeller. Fyra containrar: nginx, webb, databas och en schemaläggare.
DET SVÅRA
Kampanjavsändaren räknar ut hur många intervall som gått sedan starttiden och skickar nästa omgång på tio mottagare, följer förloppet och skriver en leveranslogg med ett genererat message-id per mottagare - en strypning gjord för att överleva en delad e-postserver snarare än att förutsätta en leveransleverantör. Ett timvis jobb pollar sedan IMAP, tolkar studsnotiser och stämmer av dem mot leveransloggarna på message-id. Under detta ligger skydd mot missbruk i flera lager: honeypot-URL:er som bannlyser käll-IP:n i trettio dagar, en blocklista över dåliga bottar och rate limits per vy.
202025
PROJEKT 20

Trespråkig webbplats för energihandel, inklusive höger-till-vänster

Marknadsföringssajt för ett företag inom energihandel, energileverans och energiproduktion, som täcker handel, mäkleri, leverans och högspänningsställverk, på engelska, rumänska och hebreiska - tre parallella sidträd med nio sidor vardera.

BYGGT MED
Tailwind CSSJavaScriptPHPNGINX
INTEGRERAT MED
Google AnalyticsreCAPTCHASMTP
STACK
Statisk HTML med Tailwind kompilerat till en enda stilmall, moduler i ren JavaScript, en enda PHP-endpoint för kontaktformuläret. Apache på ett delat webbhotell.
DET SVÅRA
E-postendpointen talar SMTP direkt - öppnar en TLS-socket och gör autentiseringshandskakningen själv, utan e-postbibliotek - eftersom webbhotellet inte erbjöd något användbart alternativ. Webbstatistiken är verkligen samtyckesstyrd: taggen laddas inte alls förrän ett samtycke är sparat, den respekterar dessutom Do-Not-Track och vägrar köra utanför produktionsvärdnamnet. Höger-till-vänster hanteras i Tailwind-källan i stället för att skruvas på som en andra stilmall, och varje URL anger sina språkalternativ.
212024
PROJEKT 21

Plattform för gåvor och volontärarbete för en välgörenhetsorganisation för barn

Publik webbplats, insamlingskampanjer, evenemang, gåvor online och anmälan av volontärer för en rumänsk välgörenhetsorganisation som stöttar barn i utsatthet och barn med autism, redigerbar i adminen på åtta språk.

BYGGT MED
DjangoPythonMySQL
INTEGRERAT MED
PayPalGoogle AnalyticsreCAPTCHASMTP
STACK
Django 4.2, MySQL, Unfold-admin, modeltranslation. PayPal anropas direkt över REST i stället för via ett SDK.
DET SVÅRA
Ett CMS-mönster med singleton-modeller där var och en av de omkring tjugo sidsektionerna skapar sin rad automatiskt vid migreringen, så att den som redigerar aldrig möts av en tom skärm i adminen och aldrig behöver veta vad en fixture är. Alla nycklar till tredjepartstjänster ligger i ett databasbaserat valv i stället för i miljöfiler, vilket är rätt avvägning för en kund som byter leverantör oftare än den deployar.
222024
PROJEKT 22

Tvåspråkig katalog för en industriell packningstillverkare

Fyrtioåtta sidor med produkter och tjänster - spirallindade och metalliska packningar, expansionsfogar, marin utrustning, laserskärning, elektroplätering - för en tillverkare grundad 1992 som levererar till kunder inom petrokemi, energi och skeppsbyggnad, med sina certifieringar publicerade vid sidan om.

BYGGT MED
JavaScript
STACK
Statisk HTML. Inget ramverk, ingen databas, inget byggsteg - det rätta svaret för en katalog som ändras två gånger om året och måste överleva vilket ramverks supportfönster som helst.
DET SVÅRA
Ingenting, och det är själva poängen. Inte varje uppdrag är ett system, och en statisk webbplats som kunden kan hosta var som helst i tio år är här ett bättre resultat än ett CMS som ingen kommer att logga in i.
232024
PROJEKT 23

En performance-marketing-byrås webbplats, där varje sektion är en rad i adminen

En webbplats för en byrå som kör betalda kampanjer i sociala medier och sök. Det finns ingen sida som en kund måste be mig ändra: varje sektion på startsidan - hero, tjänster, process, rutnät med case, omdömen, kolumner i sidfoten - är en egen modell som går att redigera i adminen. Den enda riktiga logiken är kontaktformuläret, som kvalificerar snarare än bara samlar in, och frågar efter webbplatsen, den månatliga annonsbudgeten och vilka plattformar de vill köra på.

BYGGT MED
DjangoPythonMySQLTailwind CSSAlpine.jsJavaScriptApache
INTEGRERAT MED
Google AnalyticsreCAPTCHASMTP
STACK
Django 4.2 med django-unfold, MySQL via PyMySQL, modeltranslation på åtta språk, CKEditor för långa textfält, Tailwind och Alpine laddade från ett CDN utan byggsteg, Whitenoise, Passenger på cPanel. Trettiotvå modeller över tre appar.
DET SVÅRA
Ingenting här är svårt, och posten förtjänar sin plats genom att visa den motsatta färdigheten: en webbplats vars ägare aldrig behöver en utvecklare för att ändra ett ord i den. Den ärliga bristen syns i schemat - portföljmodellen bär fortfarande ett fält för yta och ett för plats, ärvda från den fastighetsmall den forkades från, och ungefär en tredjedel av beroendelistan följde med och importeras aldrig. Det är vad det faktiskt kostar att forka ett fungerande projekt för att spara en vecka, och jag visar hellre det än städar bort det ur berättelsen.
242025
PROJEKT 24

En digitalbyrås webbplats som en statisk single-page-app, med animationen handskriven

Nio tjänsteområden, en process i fem steg, en presentation av egna varumärken och omdömen, helt utan backend: varje ord av texten ligger i en enda modul, och hela sajten driftsätts som statiska filer bakom en enda rewrite-regel. Varje tjänst har sin egen animation i stället för en gemensam effekt som används nio gånger.

BYGGT MED
Vue.jsViteTailwind CSSJavaScriptGreenSockApache
INTEGRERAT MED
reCAPTCHAGoogle Fonts
STACK
Vue 3 med Composition API, Vue Router, Vite med manuell vendor-chunkning, Tailwind, GSAP, Lucide-ikoner. Omkring sextusen trehundra rader över åtta routes, varav en är en sida för designsystemet. Apache som serverar den byggda utdatan.
DET SVÅRA
Tolv animationskomponenter, en per tjänst, skrivna i stället för hämtade från ett bibliotek, med composables för intersection observer och uppräkning under sig. Det är hantverk och det är hela dess ambition. Den rymmer också det tydligaste exempel jag har på ett beroende som överlevt sitt syfte: reCAPTCHA v3 laddas på varje sida och skyddar ingenting, eftersom det inte finns något formulär på sajten - kontaktrutten är en mailto-länk, och valideringsbiblioteket som installerades för formuläret som aldrig byggdes ligger kvar i manifestet. Ett tredjepartsskript som körs vid varje sidladdning och inte gör något är en samtyckesrisk snarare än en oskyldig rest, och det står på listan över sådant som ska bort.
BLOCKKEDJA OCH ALGORITMISK TRADING
252026
PROJEKT 25

En EVM-sidokedja, från början till slut - nätverk, utforskare, brygga, plånbok och launchpad

Hela lanseringen, inte bara kontrakten. En nodtopologi med sex roller - bootnode, validatorer, publik RPC, arkiv, utforskare och faucet - genererad per nätverk ur en enda allokeringsfil, för devnet, testnet och mainnet, var och en med sin egen faucet. Ovanpå det: en Solidity-svit som täcker det egna myntet, en brygga mellan kedjor som intygas av validatorer, staking, vesting och en launchpad för tokens där man betalar per funktion; en relayer i Node som bär meddelanden mellan kedjor; en block-utforskare med eget tema; och ett plånbokstillägg för Chrome som talar EIP-1193. För att vara exakt med vad som är mitt - själva nodklienten är upstream och omodifierad. Allt runt omkring är det inte.

BYGGT MED
SolidityOpenZeppelinGoNode.jsJavaScriptTerraformDockerNGINXPostgreSQLRust
INTEGRERAT MED
Google FontsBNB ChainArbitrumBaseAvalancheBlockscoutUniswap V2SolanaAWSArbiscanBAS node stackBasescanBscScanEthereumEtherscanOptimismOptimistic EtherscanPancakeSwap V2PolygonPolygonScanQuickSwapSepoliaSnowtraceTrader Joe V1
STACK
Solidity 0.8.24 med OpenZeppelin 5.1 exakt låst, Hardhat och ethers v6, Node 20 för relayern och fauceten, Terraform och Docker Compose för validatorflottan, en Blockscout-stack inlagd i repot bakom nginx för utforskaren, ren JavaScript för dApparna och plånboken, Rust och Anchor för Solana-benet. 3 500 rader egen Solidity, 12 000 rader JavaScript, 142 kontraktstester i fyra sviter.
DET SVÅRA
En enda allokeringsfil är den enda källan till sanning för utbudet på hundra miljoner, och bygget genererar genesis, compose-katalogerna per roll och deploy-skripten ur den, lika för devnet, testnet och mainnet - så att de tre nätverken inte kan glida isär. Ett preflight-steg vägrar bygga ett mainnet-genesis så länge någon platshållaradress finns kvar. Fauceten implementerar om nodklientens eget WebSocket-protokoll, så att sidan inte behöver något specialfall för lokala nätverk. Relayern flyttar fram sin blockmarkör först när varje meddelande i ett intervall är sparat, eftersom att flytta fram den först tappar överföringar för gott och ingenting skannar om. Bevarat utbud är en designinvariant snarare än en kontroll: exakt en kedja håller medel i escrow och alla andra mintar, tokentaket är lika med genesis-utbudet, och deploy-skripten mintar ingenting. OpenZeppelin-versionen är låst eftersom 5.2 genererar en opcode som är nyare än nodens EVM - ett nyare bibliotek skulle ge bytekod som dess egna validatorer inte kunde köra. Bryggan bygger på ett betrott kvorum och beskrivs så på tre olika ställen i stället för att kallas trustless.
262026
PROJEKT 26

Intradagsbot för guldhandel, med modellen hållen utanför den kritiska vägen

En intradagsbot som handlar spotguld och optioner på guld-ETF:er i två parallella spår - ett scalpingspår på femsekundersstaplar byggda ur den råa strömmen av avslut, och ett swingspår på minutstaplar. Nio grindar står mellan ett upptäckt mönster och en order: session, nyhetsblackout, volatilitetsregim, mönsterkvalitet, trendriktning, samstämmighet i högre tidsram, volym, nyhetssentiment och konfidens. Den körs mot mäklarnas simuleringskonton, och live-handel är medvetet oimplementerad och blockerad i koden.

BYGGT MED
PythonpandasNumPySQLiteMySQLLinux
INTEGRERAT MED
AnthropicGDELTFREDBLSFederal ReserveECBAlpacaMarketauxSaxo Bank
STACK
Python 3.11 med pandas och numpy, medvetet versionsbegränsade så att förbyggda wheels installeras på ett delat webbhotell utan kompilator. SQLite för handelsjournalen, MySQL för export, standardbibliotekets egen HTTP-server för dashboarden. 18 000 rader över 94 moduler och 541 tester.
DET SVÅRA
Språkmodellen går på sin egen bakgrundsklocka och skriver en cache som handelsloopen läser omedelbart, eftersom en tur och retur på en till tre sekunder på femsekundersstaplar betyder att man agerar på ett pris som inte längre finns - och det felet är tyst, eftersom svaret fortfarande ser rimligt ut. Den får ge en bias och två multiplikatorer; den kan inte hitta på en affär, välja riktning, sätta storlek på en position eller flytta ett stopp, och den faller tillbaka till neutralt vid fel. Inlärningslagret är handskriven logistisk regression just för att det inte ska kunna dölja överanpassning: in-sample och out-of-sample redovisas alltid tillsammans, uppdelningar följer tidsordning, och en naiv baslinje som tar varje affär skrivs ut vid sidan om. Utgångar utlöses på underliggande pris i stället för på optionspremien, eftersom premien rör sig med volatilitet och tidsvärdesförfall. Supervisorn använder ett fillås efter att två körningar med sekunders mellanrum slunkit förbi en pidfil-kontroll och lämnat två bottar som handlade på ett och samma konto.
PLATTFORMAR JAG BYGGT ÅT MIG SJÄLV
272025
PROJEKT 27

Min egen webbplats och kundportal, med en Figma-brygga inbyggd i adminen

Den publika sidan är en portfölj. Bakom en inloggning blir den en liten kundportal - projekt, milstolpar, uppgifter, kommentarer och bilagor - och bakom en inloggning för personal finns en panel som läser ett projekts modeller och URL-konfiguration och gör om dem till diagram och ett nodträd för Figma.

BYGGT MED
DjangoPythonMySQLTailwind CSSAlpine.jsJavaScript
INTEGRERAT MED
OpenAIGoogle AnalyticsFigmareCAPTCHASMTPWordPress.com mShots
STACK
Django 4.2, django-unfold, MySQL, modeltranslation på tio språk, CKEditor, Tailwind och Alpine från ett CDN, Passenger på cPanel. Trettio modeller över tre appar, plus ett tillhörande Figma-plugin.
DET SVÅRA
Figma-generatorn bygger sitt nodträd deterministiskt - ramar, rektanglar och text placerade av kod - och erbjuder först därefter ett valfritt modellpass för att snygga till det. Den ordningen är hela designen: samma projekt ger alltid samma layout, och modellen kan förbättra resultatet men är aldrig skälet till att det finns. Pluginet hämtar sin specifikation via en signerad admin-URL, så att Figmas skrivbordsapp kan dra hem en design utan att hålla en session. Två luckor jag inte tänker låtsas är färdiga: push-sidan av Figma-integrationen är fortfarande en stub, och OpenAI-klienten importeras utan att vara versionslåst, så en ren installation av den panelen fallerar tills den läggs till.
282026
PROJEKT 28

Plattformen den här webbplatsen kör på - en process för sajten, adminen, API:et och tratten

En enda Django-process renderar en publik webbplats på sju språk och serverar dessutom adminen, ett GraphQL-API, ett flerstegsformulär för leads med engångskoder via SMS och typade samtyckesposter, förstaparts besöksstatistik med klickvärmekartor, en sidbyggare, ett bokningssystem med Zoom-möten och påminnelser, felsidor, underhållsläge och serverhälsa. React-bundlen byggs på min egen maskin och laddas upp färdigbyggd, eftersom webbhotellets C-bibliotek är för gammalt för att köra ett aktuellt Node.

BYGGT MED
DjangoPythonMySQLRedisCeleryGraphQLReactViteJavaScriptNGINX
INTEGRERAT MED
StripeSMSAPIMeta PixelMeta Conversions APITikTok PixelGoogle Tag ManagerreCAPTCHASMTPZoom
STACK
Python 3.11 och Django 5.2 LTS, django-unfold, MySQL via PyMySQL, Redis, Celery med beat, resultat och Flower, Strawberry GraphQL med Django-optimeringstillägget, modeltranslation, Silk enbart i utveckling, React 18 och Vite för frontend-ön. Tio appar, trettiotre modeller, ungefär åttatusen tvåhundra rader Python.
DET SVÅRA
Konverteringsspårningen avfyras två gånger med flit: webbläsarpixeln och API:et på serversidan skickar samma händelse med samma event-id, så att plattformen deduplicerar dem, och de händelser som blockerare annars skulle ta bort - ofta en femtedel till två femtedelar av dem - överlever. Personuppgiftsfält hashas innan de lämnar systemet, och ett fel i spårningen sväljs i stället för att kastas vidare, eftersom ett lead är värt mer än ett perfekt rapporterat sådant. Formulärmotorn är nio modeller och tolv frågetyper över en tratt i fem tillstånd med en händelselogg för revision; dess publika endpoints är medvetet undantagna från CSRF, eftersom markupen skrivs i adminen och serveras ordagrant, och ett sessions-id som utfärdats av servern och är omöjligt att gissa gör det arbete som en token annars skulle ha gjort. Varje versionsvillkor i requirements-filen bär skälet till att det finns, inklusive dem jag helst skulle slippa. Svagheten är testtäckningen: tjugotre smoke-tester mot åtta tusen rader, vilket inte räcker och det vet jag.

Låter något här som ditt problem?

Mönstret som återkommer i de flesta av dem är detsamma: en verksamhet som drivs på verktyg som inte känner till varandra. Känner du igen dig, säg till så berättar jag vad det faktiskt skulle kräva att slå ihop dem.