Jag arbetar på Adaptive Media, en webbyrå/digital byrå, i centrala Stockholm. På Adaptive gör vi framför allt interna system för diverse företag, men vi tillåter oss också att gnugga våra egna hjärnknölar då och då.

Under vintern 2018 skulle vi ha en så kallad "internvecka" där vi gemensamt skulle planera och skapa våra egna projekt, med målet att dessa skulle nå lansering. Tidigare hade vi haft som mål att knåpa ihop något under internveckan och att vi skulle vara klara när fredagen anlände. Men utöver denna vecka fick vi nu också budgeterad tid att sitta med dessa projekt en dag i veckan de kommande månaderna vilket möjliggjorde att vi kunde tänka lite större.

Vid en tidigare internvecka hade jag tillsammans med en arbetskollega knåpat ihop ett första utkast för en mobilapp som skulle kunna ta bilder på en skärm och analysera bildens innehåll. Detta skulle framför allt kunna användas internt på kontoret, men vi såg nog kanske även en möjlighet att ta detta vidare. Efter att ha arbetat på detta en vecka insåg vi att det inte fanns en chans att vi skulle hinna klart, och projektet rann ut i sanden.

Inför denna internvecka kom jag med fyra-fem hastigt ihopkasta idéer som jag pitchade för några stycken. De nickade lite halvintresserat, men Oscar, en av våra projektledare som alltid har en massa idéer, nämnde fotbolls-VM och hur man ofta sitter med ett gäng kamrater och samlar allas tipp i excel-ark. "Det borde kanske finnas något vi kan göra med det?" Tippa med vänner föddes.

Det fanns visserligen konkurrenter, men vi såg inte det som ett hinder utan tillät oss istället att tänka fritt och utanför de ramar som oftast finns hos liknande tjänster.

Tillsammans var vi ett gäng som började spåna på upplägg och idéer. "Man kan göra så här, och så här, och så här..." Bland annat såg vi en mobilapplikation som ett måste, en idé vi var tvungna att skrota ganska tidigt när vi insåg vidden av det vi planerat.

Vi kom fram till att vi ville bygga en tjänst i vilken man kunde bjuda in sina vänner och kollegor, och sedan tippa fotbolls-VM. Alla skulle lägga in sina tipp och sedan kunde man följa varandras fram- och motgångar, allt med ett snillrikt poängssystem. Vi skulle bygga det som ett community där fotbollen var anledningen till att man kom, men användarna anledningen till varför man stannade.

Vi insåg att vi inte hade tid med något annat än att köra igång. Och köra igång gjorde vi.

Vår frontendutvecklare och designer Johanna började ta fram skisser och sätta skalet för hur webappen skulle se ut och Oscar började ta fram regelverk och behörighetsmetoder (användarna skulle kunna delta i olika grupper beroende på hur grupperna var skapade och beroende på om användarna hade tillåtelse att delta i de respektive grupperna, med mera).

I ett tidigt skede hade vi fortfarande appen med i planeringen så min idé var att bygga allt i React för att sedan kunna "tjoffa över det" till en React Native-applikation. Efter att ha byggt det på det viset ett tag insåg jag att

  • jag hade aldrig byggt en så stor applikation i React och datahanteringen började bli alltför stökig
  • jag hade aldrig byggt en så stor applikation i React så allt tog mycket längre tid än vad jag är van vid, och
  • jag hade aldrig byggt en så stor applikation i React.

Vid det här laget var jag dessutom ensam som backendutvecklare (de andra på kontoret jobbade på med andra internprojekt, bland annat den eminenta tjänsten Gitpine) så om jag skulle kunna få detta färdigt var jag tvungen att tänka om. Över en helg byggde jag om allt till en "vanlig" Laravel-applikation sprinklat med diverse React- och Vue-komponenter.

Huh? Både React och Vue? Por qué?

I och med att vissa sidor och komponenter redan var "färdiga" och byggda i React så lät vi dem vara kvar, med vetskapen om att vi eventuellt kunde bygga om de senare. De Javascript-komponenter som senare följde skrevs nästan enbart i Vue, bland annat det notifikationssystem som vi byggde med websockets via Pusher, så det blev en salig blandning av godsaker.

Vi arbetade med sidan fram och tillbaka under våren, men någon gång i mars insåg jag att vi inte kommer att hinna med allt som vi vill om vi ska kunna hinna. Vi var tvungna att göra det vi visste att vi skulle hinna.

Bland annat skulle vi behöva få tag på en tillförlitlig datakälla som skulle förse oss med korrekta resultat så att vi skulle kunna uppdatera användarnas poäng utifrån deras tipp. Det visade sig inte vara det enklaste. FIFA hade sedan tidigare ett API, från vilket man skulle kunna hämta massa göttig information, men det fanns knappt några länkar till det och det kändes osäkert att arbeta med något som man inte riktigt kunde testa i förhand. När VM väl började var allt tvunget att fungera, och vi kunde inte bara chansa på att det skulle lira så som vi trodde och tyckte att det borde lira.

Så en automatisk uppdatering av resultaten baserat på en bra datakälla skippades... Istället satt jag och uppdaterade matcherna allt eftersom de hade spelats färdigt. Alla 60+ matcher. Vid ett tillfälle somnade jag när jag skulle lägga en av mina söner och missade att uppdatera. Folk undrade varför det tog sån tid... 🤦‍♂️

Det som däremot gav en fantastisk känsla var att vi fick väldigt mycket feedback från användarna. Bland annat hade vi satt upp systemet så att man skulle tippa VM:s gruppspel och utefter det genererade vi fram slutspelet som man hade tippat fram. Alla matcher skulle tippas innan VM började.
Men så ville inte alla ha det. Efter en någorlunda snabb diskussion byggde vi "Live Score" som tillät användarna att dessutom tippa slutspelsmatcherna under turneringens gång. Detta blev mycket uppskattat och användes av nästan alla användare.

Utöver att mobilappen skippades (kanske kommer framöver?) så lyckades vi bygga en riktigt bra sajt, som självklart hade sina begränsningar, men vid ett tillfälle insåg vi att vissa tippade resultat inte hade sparats. Det gick kalla kårar längs ryggraden, men genom lite fix och trix lyckades vi lösa det problemet. Jag vill inte gå för djupt in på Tippgate, det river upp för många sår...

Innan vi ens hade lanserat tjänsten hade vi fått en drös med frågor via mail om när vi skulle dra igång, och de sista dagarna innan VM drog igång öste det på med användare i en osannolik hastighet. Vi hade i bästa scenario sett framför oss ett par närmast sörjande som deltog, men vi slog alla förväntningar vi kunde ha haft.

I samband med att en match spelades så uppdaterades resultatet på sidan (det hade vi iallafall lyckats med!) vilket gjorde att sidan var fulltjåkad med besökare under matcherna där de diskuterade och följde sina tipp. Efter att matcherna spelades klart flockades det med användare vilket gjorde att sidan var lååångsam. Vi hade inte alls räknat med sådant tryck!

När VM väl var över kändes det fantastiskt att veta att vi hade genomför ett så givande och fantastiskt projekt som vi ämnar utveckla vidare framöver. Det var riktigt spännande att vara en del av något som var så populärt och så uppskattat. Dessutom tyckte frugan att det var härligt att jag inte behövde hålla koll på en massa fotbollsmatcher varje dag för att sedan manuellt uppdatera dem...