Case 002 GAMING SERVER / WEB PLATFORM

G3XNSBR Platform

Complete web infrastructure modernization for a Counter-Strike: Source gaming server. Rebuilt from legacy systems to a high-performance modern stack, serving 800+ active players monthly with drastically improved resource efficiency.

Project spec G3XNSBR logo
Role
Fullstack engineer
Team
TODO — team size
Duration
TODO — e.g. 5 months
Status
Live
Downtime
Zero
800+
Players / mo
10x
Faster
60%
Less CPU

Client

G3XNSBR Gaming

Services

Platform Migration / Fullstack Engineering

Stack

React, Vite, Bun, Drizzle, Supabase

Year

2024

Scroll to read the case
01 Context

Overview

My role

  • TODO — e.g. Schema redesign and data migration
  • TODO — e.g. Frontend rebuild in React + Vite
  • TODO — e.g. API rewrite on Bun
  • TODO — e.g. Deploy and monitoring setup
Started
TODO — month/year
Cutover
TODO — month/year
Current phase
TODO — e.g. Maintenance

TODO — frame the case in one or two sentences: a community server whose website had outgrown the stack it was written on.

TODO — what the platform does for players: stats, rankings, store, bans, donations. Describe the surface area so the migration scope is understandable.

TODO — the state of the legacy system when you took over. What was it written in, how was it deployed, and what specifically kept breaking?

TODO — the constraint that shaped everything: the game server had to stay up and player data could not be lost.

02 Problem space

The Challenge

The server's web infrastructure was built on extremely outdated patterns that severely impacted performance and consumed limited server resources inefficiently. With 800+ active players monthly depending on the platform, the legacy system was becoming unsustainable and affecting the entire gaming experience.

  • Legacy web stack causing severe performance bottlenecks
  • Inefficient infrastructure resource consumption
  • Outdated database architecture limiting scalability
01
800+
Active players monthly

TODO — what the traffic pattern looked like (peaks, match nights).

02
10x
Performance improvement

TODO — how this was measured, and against which baseline.

TODO — constraint title

TODO — e.g. no maintenance window was acceptable to the community.

TODO — constraint title

TODO — e.g. years of player stats had to survive the schema change intact.

TODO — constraint title

TODO — e.g. the box had a fixed CPU/RAM budget shared with the game server.

03 System design

Architecture

TODO — describe the target architecture and how traffic flows from the browser through the API to the database and the game server.

TODO — key decision

TODO — why Bun over Node, or why Supabase over self-hosted Postgres.

TODO — key decision

TODO — how you kept the old and new systems running side by side.

System diagram 4 layers

Client

Browser
React + Vite

TODO — routing and data fetching

Asset pipeline

TODO — what was optimised

Realtime

TODO — live player data strategy

API

Bun runtime
HTTP layer

TODO — framework and routing

Auth

TODO — how players sign in

Caching

TODO — what is cached and for how long

Data

Supabase / Postgres
Drizzle ORM

TODO — type-safe query layer

Schema

TODO — the redesign in one line

Migrations

TODO — how the cutover ran

Game server

Untouched legacy
CS:S server

TODO — how it reports stats

Plugin bridge

TODO — the integration point

04 How it was built

The Process

A phased migration approach ensured zero downtime for the 800+ active players while completely rebuilding the platform underneath.

4 phases
  1. 01

    Audit & Planning

    TODO — e.g. 2 weeks

    Mapped all legacy endpoints, database schemas, and identified performance bottlenecks impacting player experience.

    Deliverables

    • TODO — deliverable
    • TODO — deliverable
  2. 02

    Database Migration

    TODO — e.g. 5 weeks

    Redesigned the schema with Drizzle ORM and migrated all data to Supabase with zero data loss.

    Deliverables

    • TODO — deliverable
    • TODO — deliverable
  3. 03

    Frontend Rebuild

    TODO — e.g. 8 weeks

    Built the new React + Vite frontend with modern UI patterns, real-time player data, and optimized asset loading.

    Deliverables

    • TODO — deliverable
    • TODO — deliverable
  4. 04

    Deploy & Monitor

    TODO — e.g. 3 weeks

    Deployed with Bun runtime, set up monitoring, and validated performance metrics against legacy baseline.

    Deliverables

    • TODO — deliverable
    • TODO — deliverable
05 What was shipped

The Solution

We completely rebuilt the web infrastructure from the ground up. The frontend was migrated to a modern React + Vite stack, replacing outdated patterns with a fast, component-based architecture. The backend APIs were rewritten using Bun runtime with Drizzle ORM, providing type safety and significantly better performance than the legacy Node.js setup.

The entire database was remodeled and migrated to Supabase, eliminating the old inefficient schema and leveraging modern PostgreSQL features. This modernization dramatically reduced infrastructure resource consumption while serving the same 800+ monthly active Counter-Strike: Source players. Only the game server remains from the legacy system - everything else is now state-of-the-art.

Built with

React Vite Bun Drizzle ORM Supabase TypeScript
01 import { drizzle } from 'drizzle-orm/postgres-js'
02 import postgres from 'postgres'
03
04 // Supabase connection with Drizzle ORM
05 const client = postgres(process.env.DATABASE_URL!)
06 export const db = drizzle(client)
07
08 // Modern type-safe queries replacing legacy SQL
09 const players = await db.select().from(playerTable)

The whole data layer became type-safe: no more hand-written SQL strings.

TODO — decision title

TODO — e.g. why Bun replaced Node, and what it actually bought you.

TODO — decision title

TODO — e.g. why the game server was deliberately left alone.

07 Delta

Before & after

TODO — frame the comparison. Use the numbers you actually measured before and after the migration.

Metric Legacy Rebuilt
Page load (p75) TODO TODO TODO
CPU usage at peak TODO TODO TODO
Database queries per page TODO TODO
Deploy time TODO TODO
Type safety None End to end
08 Outcome

The Results

The migration delivered dramatic improvements across every metric, with the platform now running faster on fewer resources.

A complete infrastructure modernization that improved performance by 10x while reducing server costs by more than half.

10x
Faster page loads
60%
Less resource usage
800+
Active players served
0
Downtime during migration
09 Retrospective

What I'd keep, what I'd change

TODO — one line setting up the retrospective.

What worked

  • TODO — what worked

    TODO — the migration tactic that made zero downtime possible.

  • TODO — what worked

    TODO — another one.

Trade-offs

  • TODO — what you would change

    TODO — be specific about the cost.

  • TODO — what you would change

    TODO — another one.

10 Colophon

Every tool, and why

TODO — a line about how the stack was picked.

Frontend

3
React
TODO — why React here
Vite
TODO — build and DX gains
TypeScript
TODO — where it caught the most bugs

Backend

3
Bun
TODO — the runtime win in numbers
Drizzle ORM
TODO — type-safe queries over raw SQL
Supabase
TODO — what it replaced operationally

Operations

3
Monitoring
TODO — what you watch and where
CI/CD
TODO — how deploys happen now
Backups
TODO — the recovery story