Bonafide Nordic
bonafide.se är en B2B-plattform som förmedlar sport- och musikresepaket via ett nätverk av resebyråer och agenter. Genom att samla evenemang, filtrering och bokningsflöde på ett ställe förenklar plattformen för partners att erbjuda ett brett utbud av upplevelseresor, utan att själva behöva bygga upp systemet från grunden.
Min roll i projektet
Jag har tagit fram hela hemsidan – både design och teknik – utifrån kundens referenser och önskemål.
Kund
Bonafide Nordic AB



Bonafide – B2B-plattform för sport- och musikresor
Bonafide Nordic AB driver en B2B-plattform som säljer sport- och musikresepaket, men aldrig direkt till slutkund. Istället registrerar sig resebyråer och agenter som partners på plattformen, och det är via dem som slutkunder når evenemangen och skickar in sina förfrågningar.
Det här upplägget ställer särskilda krav på tekniken: data om tusentals evenemang måste hållas uppdaterad, varje partner behöver kunna visa upp utbudet på sin egen webbplats, och besökare ska snabbt kunna filtrera fram rätt resa bland ett stort och ständigt föränderligt utbud.
Import från Google Sheets till WordPress
Bonafides evenemangsdata hanteras internt i Google Sheets, där ett team löpande lägger till och uppdaterar matcher, konserter och resor. Kalkylarket valdes medvetet som arbetsyta eftersom det gör det enkelt och snabbt för teamet att lägga in nya event, utan att behöva logga in i WordPress eller sätta sig in i ett CMS. För att slippa dubbelarbete har jag byggt en synkroniseringslösning med Google Apps Script som automatiskt skickar informationen vidare till WordPress via REST API:et.
Skriptet tolkar bland annat sport utifrån vilken flik i kalkylarket eventet ligger i, och slår upp arena, stad och land automatiskt från en separat arenadatabas. Ett inbyggt kontrollsystem ser till att bara ändrade rader synkas, vilket gör att stora datamängder kan hanteras snabbt utan onödig belastning på webbplatsen.
Avancerad filterfunktion
Med tusentals evenemang i systemet är sökbarhet avgörande. Jag har byggt en filterfunktion där besökaren kan kombinera flera urval samtidigt – sport, liga, lag, land och stad – och listan uppdateras dynamiskt utan att sidan behöver laddas om.
Resultaten laddas in sida för sida via AJAX, vilket gör att sidan känns snabb även när utbudet växer. Filtreringen är samma lösning som återanvänds i whitelabel-vyerna, vilket gör att partners kan erbjuda en lika smidig upplevelse på sina egna webbplatser.
Whitelabel-lösning för partners
Varje partner får ett unikt, permanent inbäddningsbart filter att lägga in på sin egen webbplats. Lösningen bygger på tokenbaserad autentisering, där varje agent kopplas till en egen inbäddningssida med möjlighet att styra utseendet – bakgrundsfärg, marginaler och knappfärg – direkt via URL-parametrar.
På så vis kan varje resebyrå erbjuda Bonafides fulla utbud som en naturlig del av sin egen sajt, utan att besökaren märker att innehållet egentligen hämtas från en extern plattform.
AI-genererade bilder
Kunden ville visa upp exempel på olika sporter och kulturevenemang på startsidan. Autentiska bilder från riktiga matcher och evenemang är dock sällan tillgängliga i vanliga stockfotobibliotek. De ägs ofta av fotografer, bildbyråer eller arrangörer och licensieras separat, ibland endast för redaktionell användning. Resultatet blir att traditionella stocktjänster främst erbjuder mer generiska sport- och evenemangsbilder med svag koppling till verkliga matchsituationer.
Lösningen blev att istället generera fram bilderna med AI, med påhittade lagnamn och sponsorer för att undvika verkliga varumärken och därmed eventuella juridiska komplikationer. Bilderna visar äkta actionkänsla från respektive sport men utan koppling till specifika lag och företag. Dessutom kunde jag hålla en genomgående stilkänsla över samtliga bilder så att uttrycket harmoniserade, vilket gav startsidan ett enhetligt och sammanhållet intryck.



Ai-genererade bilder, ett smart sätt att kostadseffektivt kunna visa illustrativa sportbilder.
Automatisk databasrensning
Eftersom evenemang ständigt tillkommer och går ut riskerade databasen att svälla med inaktuell information, vilket i sin tur påverkade prestandan i filterfunktionen. Lösningen blev ett städskript som körs varje natt via cron, och som automatiskt markerar och rensar bort utgångna evenemang baserat på deras datum.
För att undvika tunga databasfrågor vid varje sidladdning beräknas och sparas evenemangets status i förväg, så att filtreringen alltid kan slå upp aktuella evenemang snabbt – oavsett hur stor databasen växer.