Spike Series
Eine Plattform, um einen ganzen Circuit zu betreiben.
Regionale VALORANT-Circuits für einen europäischen Veranstalter: öffentliche Website, Verwaltungsportal und Discord-Bot, von VentuLabs von Grund auf gebaut – mit demselben Stack und denselben Garantien wie unsere eigenen Produkte.
- 4.839
- automatische Tests
- 8
- Sprachen
- 197
- Architekturentscheidungen
- 67
- Datenbanktabellen
- 1.200
- gleichzeitige Zuschauer, gemessen
In Produktion auf spikeserieseu.es (Öffnet in einem neuen Tab)

Eine Plattform, um einen ganzen Circuit zu betreiben
Öffentliche Website für Spieler und Zuschauer, Verwaltungsportal für den Veranstalter und ein Discord-Bot, der alles in Echtzeit verbindet.
Vollständige Turnier-Engine
Single und Double Elimination, Gruppen, Schweizer System, Liga und GSL. Erzeugt Brackets und Tabellen und berechnet sie nach jedem Ergebnis von selbst neu.
Map-Vetos in Echtzeit
Beide Kapitäne bannen und wählen Maps abwechselnd mit Countdown – in Echtzeit, ohne Neuladen und mit sichtbarer Historie der Serie.
Check-in und Spielablauf
Check-in vor dem Spiel, Verlegungen mit Zeitfenstern, die die Kapitäne untereinander vorschlagen und annehmen, und Ergebnismeldung pro Map.
Chat mit Discord-Anbindung
Team- und Spielchat direkt auf der Website, mit automatischer Aufbewahrungsfrist, synchronisiert mit den Discord-Kanälen des Circuits.
Integrierter Discord-Bot
Legt Teamrollen und -kanäle automatisch an und informiert per Direktnachricht über Spiele, Ergebnisse und Fristen, in der Sprache des Nutzers.
Markt für Teams und Spieler
Schwarzes Brett, auf dem Spieler und Teams inserieren und einen Platz finden, bevor die Anmeldung schließt.
Login mit Discord
Registrierung und Login mit dem Discord-Konto des Spielers, zusätzlich zu E-Mail und Passwort mit verschlüsselter Session.
Acht Sprachen
Website, Portal und Inhalte übersetzt in ES, EN, FR, PT, IT, DE, NL und TR, wobei jede Sprache nur ihr eigenes Paket lädt.
Live-Spielstand
Der Spielstand wird aus dem Stream ausgelesen, um die Live-Spiele ohne manuelles Eingreifen zu aktualisieren.
Wartung ohne Unterbrechung
Wird im Portal aktiviert und erreicht sofort alle, die gerade auf der Seite sind – ohne Neuladen.
Auditierter Support
Das Support-Team kann sich als ein Benutzer anmelden, um ihm zu helfen – mit sichtbarem Hinweis und vollständigem Protokoll der Session.
Mobile first entworfen
Jeder Screen wird zuerst bei 390 px Breite gedacht und getestet, vom Bracket bis zum Chat, bevor er für den Desktop angepasst wird.
Technische Architektur
Derselbe Stack und dieselben Garantien wie bei unseren eigenen Produkten: Tests, automatisches Deployment und mehrere Veranstalter pro Instanz vom ersten Tag an.
Frontend
- Next.js 16 mit App Router
- React 19
- TypeScript im Strict-Modus
- Tailwind CSS 4
- 8 Sprachen, jede mit eigenem Paket
- Mobile first, getestet bei 390 px
Backend
- Server Components und API-Routen
- Verschlüsselte Sessions und bcrypt
- Validierung mit Zod bei allem, was Daten verändert
- Live-Updates über Server-Sent Events
- CSRF-Schutz und Rate-Limiting
- Login mit Discord
Daten
- PostgreSQL 16 mit Drizzle ORM
- 67 Tabellen und 99 Migrationen
- Isolierung pro Veranstalter und pro Circuit
- Fremdschlüssel mit kontrolliertem Löschen
- Trigger für Änderungszeitstempel
- Versionierte SQL-Migrationen
Turnier-Engine
- Reine Bibliothek, ohne Framework und Datenbank
- Single und Double Elimination, Schweizer System, Liga und GSL
- Deterministisch: dasselbe Turnier erzeugt dasselbe Bracket
- 100 % Zeilenabdeckung
- Konfigurierbare Tabellen und Tiebreaker
- Nur Oberfläche und Portal greifen darauf zu
Infrastruktur
- Ubuntu-24.04-Server mit Node 22
- Nginx und PM2 mit mehreren Instanzen
- Let's-Encrypt-Zertifikate mit HSTS
- Deployment aus VentuHub mit vorherigem Backup
- Health-Check und automatisches Rollback
- 1.200 gleichzeitige Zuschauer gemessen
Qualität
- 4.141 Tests mit Vitest in 405 Dateien
- 698 End-to-End-Tests mit Playwright
- Drei Projekte: Chrome mobil, Safari mobil und Desktop
- Echtes Postgres in den Tests
- ESLint mit Qualitätsregeln und Ratchet
- Lighthouse 91, 100, 100 und 100 auf Mobilgeräten
Klar getrennte Rollen
Ein Kapitän kann kein anderes Team anfassen. Ein Schiedsrichter prüft nur die Spiele, die ihm zugewiesen sind.
Admin
Vollzugriff: Benutzer, Audit-Log, Einstellungen des Veranstalters und Wartung.
Organisation
Operative Verwaltung von Circuits, Turnieren, Anmeldungen und Teams.
Schiedsrichter
Prüft die Ergebnisse der ihm zugewiesenen Spiele.
Kapitän
Sein Team: Kader, Anmeldungen, Check-in, Vetos und Ergebnismeldung.
Spieler
Sieht sein Team und seine Spiele und bearbeitet sein eigenes Profil.
Nicht nur eine Ergebnis-Website
Engineering-Entscheidungen, die man normalerweise nicht sieht, die einem Live-Wettbewerb aber Stabilität geben.
Turnier-Engine als reine Bibliothek
Keine Abhängigkeit von Framework, Datenbank oder Systemzeit: Die Zeit wird injiziert und die Auslosung nutzt einen Seed, sodass dasselbe Turnier in den Tests immer dasselbe Bracket erzeugt.
Nur die aktive Sprache geht an den Browser
Jede der acht Sprachen ist ein eigenes Paket: Der Server kennt die Sprache, bevor er die Seite rendert, und der Client lädt nur dieses eine.
Live-Spiele ohne Neuladen
Ein einziger Event-Stream pro Tab meldet Ergebnisse, Vetos und Tabellenänderungen, sobald sie passieren – mit automatischer Wiederverbindung.
Wartung, ohne jemanden hängen zu lassen
Wird im Portal aktiviert und erreicht sofort alle, die gerade auf der Seite sind – ohne dass sie neu laden müssen, um es zu erfahren.
Support mit vollständiger Nachverfolgbarkeit
Das Support-Team kann sich als ein Benutzer anmelden, um ein Problem zu lösen – mit dauerhaftem Hinweis am Bildschirm und Protokoll aller Aktionen.
Mehrere Veranstalter vom ersten Tag an
Jeder Veranstalter und jeder Circuit sind in der Datenbank isoliert: Das macht aus dem Prototyp ein replizierbares Produkt.
Gemessene Kapazität, nicht geschätzt
Lasttests mit Live-Spielen: 1.200 gleichzeitige Zuschauer mit Antwortzeiten unter 350 ms im 95. Perzentil.
Deployment mit automatischem Rollback
Der Build wird separat vorbereitet und geht in einem Schritt auf den Server; schlägt der Start fehl, kehrt das System von selbst zur vorherigen Version zurück.
Tausende automatische Tests
Abdeckung von der Turnier-Engine bis zu den vollständigen Abläufen von Kapitän und Veranstalter. Jedes Deployment wird blockiert, wenn etwas fehlschlägt.
- 4.141
- Tests mit Vitest
- 405
- Testdateien
- 698
- End-to-End-Tests
- 3
- Projekte: zwei mobil und Desktop
Turnier-Engine
Brackets für Single und Double Elimination, Schweizer System, Liga und GSL: korrekte Freilose, stabile Tabellen und abgelehnte unmögliche Ergebnisse.
Authentifizierung und Session
Login mit E-Mail und mit Discord, verschlüsselte Session, CSRF, Begrenzung der Anmeldeversuche und Audit-Log.
Isolierung pro Veranstalter
Trennung pro Veranstalter und pro Circuit, auf Abfrage- und Datenbankebene geprüft.
Spiele und Live
Check-in, Verlegungen, Map-Vetos, Meldung und Prüfung von Ergebnissen sowie der Live-Event-Stream.
Sprachen und Inhalte
Die acht Sprachen laden, was sie sollen, und nichts mehr: Es wird geprüft, dass kein Client eine Sprache herunterlädt, die er nicht nutzt.
End-to-End, mobile first
Vollständige Abläufe von Kapitän und Veranstalter auf echtem Chrome, in zwei mobilen Projekten und einem Desktop-Projekt, mit Prüfungen der Barrierefreiheit.
Kompletter Stack
Dasselbe Kriterium wie bei unseren eigenen Produkten: nur moderne, gepflegte Werkzeuge mit aktiver Community.
- Next.js 16
- React 19
- TypeScript 5
- Tailwind CSS 4
- Node.js 22
- PostgreSQL 16
- Drizzle ORM
- PGlite in den Tests
- Verschlüsselte Sessions
- Zod
- discord.js
- Vitest
- Playwright
- ESLint 9
- SQL
- Bash
- Nginx
- PM2
- Ubuntu 24.04
- VentuHub
- Let's Encrypt
Brauchen Sie so etwas?
Spike Series ist eigener Code, maßgeschneidert für einen Veranstalter von VALORANT-Circuits: ohne Templates, ohne Drittanbieterdienste und mit derselben technischen Sorgfalt, die wir in unsere eigenen Produkte stecken.
Zurück zu den Referenzen