Spike Series
En plattform för att driva en hel liga.
Regionala VALORANT-ligor för en europeisk arrangör: publik webb, adminportal och Discord-bot, byggda från grunden av VentuLabs med samma stack och samma garantier som våra egna produkter.
- 4 839
- automatiska tester
- 8
- språk
- 197
- arkitekturbeslut
- 67
- tabeller i databasen
- 1 200
- samtidiga tittare, uppmätt

En plattform för att driva en hel liga
Publik webb för spelare och tittare, adminportal för arrangören och en Discord-bot som kopplar ihop allt i realtid.
Komplett tävlingsmotor
Enkel och dubbel utslagning, gruppspel, schweizersystem, seriespel och GSL. Genererar spelträd och tabeller och räknar om dem automatiskt efter varje resultat.
Kartveton live
De två kaptenerna vetar och väljer kartor turvis med nedräkning, i realtid och utan omladdning, med matchseriens historik synlig.
Check-in och matchflöde
Check-in före match, ombokningar med tider som föreslås och godkänns mellan kaptenerna, och resultatrapportering per karta.
Chatt kopplad till Discord
Lag- och matchchatt inne på webben, med automatisk gallring, synkroniserad med ligans Discord-kanaler.
Integrerad Discord-bot
Skapar lagroller och lagkanaler automatiskt och skickar direktmeddelanden om matcher, resultat och deadlines, på användarens språk.
Marknad för lag och spelare
Anslagstavla där spelare och lag annonserar och hittar en plats innan anmälan stänger.
Inloggning med Discord
Registrering och inloggning med spelarens Discord-konto, utöver e-post och lösenord med krypterad session.
Åtta språk
Webb, portal och innehåll översatta till ES, EN, FR, PT, IT, DE, NL och TR, där varje språk bara laddar sitt eget paket.
Liveresultat
Läser resultatet från sändningen för att uppdatera livematcherna utan manuell inblandning.
Underhåll utan avbrott
Slås på från portalen och når direkt alla som surfar, utan att sidan laddas om.
Granskad support
Supportteamet kan logga in som en användare för att hjälpa till, med synlig varning och fullständig logg av sessionen.
Designad mobil först
Varje skärm utformas och testas först vid 390 px bredd, från spelträd till chatt, innan den anpassas för desktop.
Teknisk arkitektur
Samma stack och samma garantier som våra egna produkter: tester, automatisk driftsättning och flera arrangörer per instans från dag ett.
Frontend
- Next.js 16 med App Router
- React 19
- TypeScript i strikt läge
- Tailwind CSS 4
- 8 språk, vart och ett med eget paket
- Mobil först, testat vid 390 px
Backend
- Serverkomponenter och API-rutter
- Krypterade sessioner och bcrypt
- Validering med Zod i allt som ändrar data
- Live via server-sent events
- CSRF-skydd och begränsning av anrop
- Inloggning med Discord
Data
- PostgreSQL 16 med Drizzle ORM
- 67 tabeller och 99 migreringar
- Isolering per arrangör och per liga
- Främmande nycklar med kontrollerad radering
- Triggers för ändringsdatum
- Versionerade SQL-migreringar
Tävlingsmotor
- Rent bibliotek, utan ramverk eller databas
- Enkel och dubbel utslagning, schweizersystem, seriespel och GSL
- Deterministisk: samma turnering ger samma spelträd
- 100 % radtäckning
- Konfigurerbara tabeller och tiebreaks
- Bara gränssnittet och portalen använder den
Infrastruktur
- Ubuntu 24.04-server med Node 22
- Nginx och PM2 med flera instanser
- Let's Encrypt-certifikat med HSTS
- Driftsättning från VentuHub med säkerhetskopia först
- Hälsokontroll och automatisk återställning
- 1 200 samtidiga tittare uppmätta
Kvalitet
- 4 141 tester med Vitest i 405 filer
- 698 end-to-end-tester med Playwright
- Tre projekt: mobil Chrome, mobil Safari och desktop
- Riktig Postgres i testerna
- ESLint med kvalitetsregler och regressionsspärr
- Lighthouse 91, 100, 100 och 100 på mobil
Tydligt åtskilda roller
En kapten kan inte röra ett annat lag. En domare verifierar bara sina tilldelade matcher.
Admin
Full åtkomst: användare, revisionslogg, arrangörsinställningar och underhåll.
Organisation
Operativ hantering av ligor, turneringar, anmälningar och lag.
Domare
Verifierar resultaten i de matcher som tilldelats.
Kapten
Sitt lag: trupp, anmälningar, check-in, veton och resultatrapportering.
Spelare
Ser sitt lag och sina matcher och redigerar sin egen profil.
Inte bara en resultatsida
Ingenjörsbeslut som normalt inte syns, men som ger stabilitet åt en tävling som pågår live.
Tävlingsmotorn som rent bibliotek
Inga beroenden till ramverket, databasen eller systemklockan: tiden injiceras och lottningen använder ett frö, så samma turnering ger alltid samma spelträd i testerna.
Bara det aktiva språket skickas till webbläsaren
Vart och ett av de åtta språken är ett eget paket: servern vet språket innan sidan renderas och klienten laddar bara ner det.
Livematcher utan omladdning
Ett enda händelseflöde per flik meddelar resultat, veton och tabelländringar så fort de sker, med automatisk återanslutning.
Underhåll utan att lämna någon på halva vägen
Slås på från portalen och når direkt alla som surfar, utan att de behöver uppdatera sidan för att få veta det.
Support med fullständig spårbarhet
Supportteamet kan logga in som en användare för att lösa ett ärende, med en permanent varning på skärmen och en logg över vad som gjordes.
Flera arrangörer från dag ett
Varje arrangör och varje liga är isolerad i databasen: det är det som gör prototypen till en replikerbar produkt.
Uppmätt kapacitet, inte uppskattad
Belastningstester med livematcher: 1 200 samtidiga tittare med svarstider under 350 ms i 95:e percentilen.
Driftsättning med automatisk återställning
Bygget förbereds separat och går in på servern i ett svep; om uppstarten misslyckas återgår systemet självt till föregående version.
Tusentals automatiska tester
Täckning från tävlingsmotorn till kompletta flöden för kapten och arrangör. Varje driftsättning stoppas om något går fel.
- 4 141
- tester med Vitest
- 405
- testfiler
- 698
- end-to-end-tester
- 3
- projekt: två mobila och ett för desktop
Tävlingsmotor
Spelträd för enkel och dubbel utslagning, schweizersystem, seriespel och GSL: korrekta frirundor, stabila tabeller och omöjliga resultat som avvisas.
Autentisering och session
Inloggning med e-post och med Discord, krypterad session, CSRF, begränsning av försök och revisionslogg.
Isolering per arrangör
Separation per arrangör och per liga verifierad på fråge- och databasnivå.
Matcher och live
Check-in, ombokningar, kartveton, rapportering och verifiering av resultat samt händelseflödet live.
Språk och innehåll
De åtta språken laddar det de ska och inget mer: det testas att ingen klient laddar ner ett språk den inte använder.
End-to-end, mobil först
Kompletta flöden för kapten och arrangör i riktig Chrome, i två mobilprojekt och ett för desktop, med tillgänglighetskontroller.
Hela stacken
Samma princip som i våra egna produkter: bara moderna verktyg som underhålls och har en aktiv community.
- Next.js 16
- React 19
- TypeScript 5
- Tailwind CSS 4
- Node.js 22
- PostgreSQL 16
- Drizzle ORM
- PGlite i tester
- Krypterade sessioner
- Zod
- discord.js
- Vitest
- Playwright
- ESLint 9
- SQL
- Bash
- Nginx
- PM2
- Ubuntu 24.04
- VentuHub
- Let's Encrypt
Behöver du något liknande?
Spike Series är egen kod, skräddarsydd för en arrangör av VALORANT-ligor: inga mallar, inga tredjepartstjänster och samma tekniska noggrannhet som vi lägger i våra egna produkter.
Tillbaka till kundcase