Hoppa till huvudinnehållet
Tillbaka till bloggen

Under huven: MIK:s nya medlems- och verksamhetssystem

Malmin Ilmailukerho
  • mik-ng
  • teknik
  • projekt
Under huven: MIK:s nya medlems- och verksamhetssystem

Vid sidan av mik.fi har ett annat, betydligt större programvaruprojekt vuxit fram i klubben under ett och ett halvt år: mik-ng. Det är ingen offentlig webbplats, utan klubbens eget system för att hantera medlemmar, bokningar, fakturering, flygdagbok och flygplan — allt på ett ställe, byggt och underhållet av klubben själv.

Skärmbild av mik-ng:s flygplanssida som visar OH-STL och OH-IHQ med uppgifter: plats, bränsletyp, timpris och tid kvar till underhåll
mik-ng:s flygplanssida — all väsentlig information om flygplanet i en överblick

Tio års historia bakom ett eget system

mik-ng är inte klubbens första egna system — det är en fortsättning på det extranät som varit i bruk sedan 2010. Ursprungligen handlade det om att underlätta faktureringen: innan dess måste flygplanens färdloggar i pappersform skannas och skickas till bokföringsbyrån för fakturering. Det första extranätet byggdes ovanpå WordPress med PHP, och utöver flygdagboken ingick en bokningskalender och en statussida för flygplanen — som i början helt enkelt var en webbkamerabild av den fysiska statustavlan i klubbhuset. Senare tillkom även andra funktioner, till exempel flygpaket.

Samma ursprungliga webbplats uppdaterades under årens lopp främst till nyare PHP-versioner. Ett större kliv togs 2020, när klubben gick över till elektronisk bokföring: faktureringen bytte från den halvt manuella tjänsten Helposti Lasku till Simplbooks. Samtidigt flyttades projektet till Git, driftsättningen automatiserades med Ansible-skript och systemet fick en egen testmiljö — tidigare hade man vant sig vid att skriva PHP direkt i produktion.

Varför bygger klubben ett eget system?

En flygklubbs vardag består av många delar som lätt sprids ut över olika tjänster: medlemsregister, flygplansbokningar, flygdagbok, fakturering, underhållsuppföljning, mötesprotokoll. Idén med mik-ng är att samla dem i ett system som klubben själv äger och utvecklar — inte bundet till en färdig, stelbent SaaS-produkt, utan på egna villkor, kodat av klubbmedlemmarna själva.

Projektgruppen kartlade också färdiga alternativ på marknaden, men eftersom klubben haft ett eget system i ett decennium hade den hunnit utveckla många egna arbetssätt som inte passade direkt in i färdiga produkter. Beslutet påverkades också av hur många frivilliga som fanns tillgängliga: man bedömde att det var möjligt att bygga ett nytt grundsystem på egen hand med de resurser klubben kunde erbjuda. AI-assisterad kodning var då, i början av 2025, inte i närheten av den nivå den har i dag — dess roll i projektet växte först senare, som framgår längre fram.

Bakom ligger också ett tydligt mål: att minska de frivilligas manuella arbete genom att automatisera så mycket som möjligt, och att ge klubbens beslutsfattare bättre och tydligare data som stöd för verksamheten.

Projektets start och tillväxt

Klubbens styrelse gav Niko Ikonen i uppdrag att förnya klubbens extranät, eftersom det gamla systemet hade börjat krångla — till stor del på grund av problem med dess tjänsteleverantör. Niko har varit projektets product owner från början. Han bjöd in frivilliga, och till projektets första möte den 28 februari 2025 samlades förutom han själv Mikko Nurmi, Juho Kolehmainen och Chris Whellams. Mikko skapade en monorepo-struktur för projektet, och strax därefter byggde Chris grunden för utvecklingsmiljön (Postgres, Docker, startskript). I juni 2025 började Niko också själv koda i projektet vid sidan av rollen som product owner, och i april 2026 anslöt ännu Joseph Russell, som sedan dess haft en central roll bland annat i arbetet med push-notiser och testtäckning.

Under ett och ett halvt år har projektet samlat över 1180 commits, nästan 400 GitHub-ärenden och över 700 pull requests — ett tecken på att det är ett aktivt system som används hela tiden och fortsätter att utvecklas, inte ett engångsprojekt.

Vad mik-ng klarar i dag

Diagram över mik-ng:s åtta delområden kring en kärna av React/Express/PostgreSQL: medlemmar, bokningar, fakturering, flygplan, bränsle, möten, statistik, påminnelser
Ett system, åtta sammankopplade delområden
  • Medlemshantering och inloggning utan lösenord — inloggningen sker med en engångslänk som skickas per e-post
  • Bokningar och flygdagbok för flygplanen
  • Fakturering, integrerad med bokföringsprogrammet Simplbooks
  • Uppföljning av flygplan och underhåll, inklusive massa- och balansberäkning och hantering av flygplanens underhållsuppgifter
  • Bränslepriser och ett bredare system för vätskehantering som är under utveckling
  • Möten och avvikelserapporter
  • Prov och kostnadsersättningar — teoriprov och reseräkningar i samma system
  • Statistik och dashboards för att följa klubbens verksamhet, samt en liten klubbutik
  • Push-påminnelser om kommande bokningar via webbläsaren — medlemmen kan slå på notiser på sin egen enhet, och systemet påminner automatiskt om en kommande flygning utöver e-posten

Den tekniska grunden är ett TypeScript-tungt pnpm-monorepo: React och Vite i frontend, Node.js och Express i backend, PostgreSQL som databas och Flyway för hantering av schemaändringar. Utvecklingsmiljön körs i Docker.

Hur ändringar når produktion

Publiceringsprocessen är automatiserad. Pull requests granskas med egna GitHub-arbetsflöden för både backend och frontend, och när en ändring slås ihop med huvudgrenen taggas versionen automatiskt utifrån versionsnumret i package.json. Publiceringen går genom miljöerna DEV → TEST → PROD på DigitalOceans plattform, och att gå till produktion kräver alltid ett separat, manuellt startat godkännande — inget hamnar i produktion av misstag med en enda sammanslagning. Dessutom tas automatiska säkerhetskopior av databasen med ett eget, separat schemalagt arbetsflöde.

Tidslinje och den stegvisa introduktionen av AI

Tidslinje från februari 2025 till augusti 2026: projektets grundande, Copilot-instruktioner, införandet av kodningsagenten och Claude Codes ankomst
mik-ng:s milstolpar under drygt ett och ett halvt år
  • Februari 2025 — Styrelsen ger Niko i uppdrag att förnya extranätet, det första projektmötet samlar teamet och Mikko öppnar mik-ng-monorepot
  • Mars 2025 — Chris börjar koda, grunden för utvecklingsmiljön byggs
  • Juni 2025 — Fakturering och synkronisering av flygdagboken kommer med, funktionstakten ökar
  • Augusti 2025 — Teamet skriver de första GitHub Copilot-instruktionerna: ett första steg mot systematisk AI-assisterad utveckling
  • Mars 2026 — Copilots autonoma kodningsagent börjar öppna egna pull requests, inte bara föreslå kompletteringar
  • April 2026 — Joseph ansluter, push-påminnelserna lanseras
  • Maj–juni 2026 — Claude Code tas i bruk i utvecklingsarbetet, och CLAUDE.md samlar instruktionerna som både Copilot och Claude Code följer i en enda källa
  • Augusti 2026 — Frontendens testtäckning lyfts i ett arbete i flera steg till den nivå som backend länge haft

AI:ns roll har vuxit stegvis: först skrivna instruktioner till AI-assistenter, sedan en agent som ger förslag, och till slut agenter som självständigt öppnar pull requests för granskning. Fram till augusti 2026 bär över 250 commits i mik-ng Claude Codes signatur sida vid sida med mänskliga upphovspersoner — betydligt fler än på den offentliga webbplatsen, vilket väl speglar hur mycket större och mer aktivt projekt mik-ng är.

Vad är på gång härnäst?

Utifrån de öppna GitHub-ärendena fortsätter utvecklingen åtminstone i följande riktningar:

  • Ett bredare system för vätskehantering, som utöver bränsle även omfattar andra vätskor som används i klubben
  • Bränsledata i realtid från Nummela flygfält (EFNU) direkt in i systemet
  • Att slutföra frontendens testtäckning — ett stort arbete i flera steg, varav en betydande del redan publicerades i augusti 2026
  • Refaktorering av gemensam kod för att ta bort överlappande lösningar för datahantering mellan olika delar

Inte färdigt, alltid i bruk

mik-ng är inte “färdigt” i ordets traditionella bemärkelse — det är ett verktyg som klubbens frivilliga utvecklar samtidigt som det används varje dag. När detta skrivs finns drygt trettio öppna GitHub-ärenden, från små användbarhetsfixar till större helheter. Om du blev intresserad och vill vara med och bygga, kontakta klubbens tekniska team!