I build ambitious web applications
Full stack engineer specializing in real-time systems, game development, and production web applications. Seven projects below — each one is a live, working demonstration of a difficult engineering problem solved. The flagship is a server-authoritative IO engine with live netcode visualization and spatial hashing for 500+ entities. No mockups, no screenshots of mockups. Click any project and use it.
Seven production-grade projects
Each project is a real, working application — not a tutorial, not a screenshot. Click any card to open the full case study with a live demo, architecture diagram, engineering challenges, and technical writeup. Spend a few minutes in each one.
Global Node Ping Tester
A real tool for the community. Click any region to measure your live round-trip time to a public endpoint. The measurements are real fetch-based RTT — no fake numbers.
The short version
Engineer who got pulled into game networking and never quite came back. These days I build ambitious full-stack web applications with a bias toward real-time systems.
I'm Célestige — a full stack software engineer who builds ambitious web applications with a focus on real-time systems and game development. The projects on this page are the work I'm most proud of: a collaborative pixel canvas handling thousands of tiles, a playable arcade game engine built on ECS architecture, a live data intelligence dashboard, an intelligent music platform, and a developer tools suite.
My approach is simple: build real things, solve hard problems, and make them fast. Every demo on this page is running live in your browser. The pixel canvas actually renders chunks. The arcade game actually runs an ECS loop at 60fps. The dashboard actually fetches live market data. Nothing is faked.
I came up building web apps first — React frontends, Node backends — and got pulled into game development because I wanted to understand how real-time multiplayer worked. The two disciplines feed each other: a multiplayer backend and a high-traffic web backend are mostly the same animal with different latency budgets.
QUICK FACTS
- FocusFULL STACK
- SpecialtyREALTIME
- StackTS / GO
- AvailabilityOPEN
- Response< 24H
Authoritative Netcode & Distributed State
Real-time distributed systems engineering for multiplayer games. Not a hobby. Not a tutorial. This is infrastructure that fights physics, latency, and malicious humans — at 60 ticks per second, with no second chances.
The client is a dumb renderer. And a liar.
The server runs a fixed-timestep deterministic simulation loop — the same inputs always produce the same world. The client never sends positions. It sends input intents: "I pressed W at tick 4127." The server decides what that means. If the client's position ever disagrees with the server's, the server wins. Always.
Defeat 80ms ping with prediction.
I implement client-side prediction with sequence-numbered reconciliation. The client simulates ahead on its own inputs instantly — the player feels zero lag. When the server snapshot arrives, the client rewinds to the last acknowledged tick and replays every unacknowledged input forward. If the predictions were right, the player never sees a correction. If wrong, the snap happens between frames. Invisible.
Validate physics at the edge. Drop the packet.
Cheating isn't a client problem. It's an architecture problem. I validate physics on the server, every tick, for every input. A client sends an intent to move 500px in 16ms? The server checks it against MAX_VELOCITY × dt, drops the packet instantly, and logs the attempt. No bans, no heuristics, no cat-and-mouse — the cheat literally cannot work because the server refuses to simulate it.
JSON is for config. Binary is for tick rates.
I pack player input into binary payloads using DataView and ArrayBuffer — 6 bytes per input instead of 120 bytes of JSON. A 64-player server at 60Hz drops from 460 KB/s to 15 KB/s. That's not an optimization. That's the difference between a server that scales and a server that drowns. Every byte you don't send is a player you can afford to host.
// Binary input packet — 6 bytes vs 120 bytes of JSON. Every byte counts. function serializeInput(input: PlayerInput): ArrayBuffer { const buf = new ArrayBuffer(6); const dv = new DataView(buf); dv.setUint16(0, input.seq, true); // 2B — sequence number dv.setUint8(2, input.keys); // 1B — bitmask W=1 A=2 S=4 D=8 dv.setInt16(3, input.aimX, true); // 2B — aim X (world coords) dv.setInt8(5, input.aimY); // 1B — aim Y (coarse, -128..127) return buf; // 6 bytes total. JSON would be 120. } // Server reconciliation — rewind, snap to truth, replay unseen inputs function reconcile(snap: Snapshot, pending: Input[]): Input[] { player.x = snap.x; player.y = snap.y; // accept server truth const unacked = pending.filter(i => i.seq > snap.lastAck); for (const input of unacked) applyInput(player, input); // replay return unacked; // drift stays under 1px }
I build the systems that make games feel local at 80ms and uncheatable at scale. The studio that hires me ships the game players stay on. The studio that doesn't wonders where their players went.
What I actually do
A pragmatic breakdown of where I'm strongest. I'd rather be honest about the edges of my comfort zone than list every tool I've ever typed into a terminal.
Real-Time Systems
- WebSockets & Socket.IO
- Client prediction & reconciliation
- Interest management
- Live collaboration (CRDT-style)
- Presence & live activity feeds
Backend Engineering
- Node.js, Go, Fastify
- REST & WebSocket APIs
- PostgreSQL & Redis
- Rate limiting & auth
- Observability & logging
Frontend Development
- TypeScript-first React & Next.js
- Canvas & WebGL rendering
- Web Audio API
- Tailwind, Zustand, TanStack Query
- Accessibility & performance
Game Development
- ECS architecture
- Game loop & fixed timesteps
- Collision & physics
- Particle systems
- AI behaviors
DevOps & Infra
- Docker & compose
- CI/CD with GitHub Actions
- Linux administration
- Nginx / Caddy
- Grafana & Loki
Security & Testing
- Server-side validation
- Auth flows (JWT, OAuth)
- Rate limiting & anti-abuse
- Unit & integration testing
- Error boundaries & monitoring
How I got here
Not a straight line. Web dev first, then game networking pulled me sideways, and the two have been tangled together ever since.
Independent
Freelance work on real-time web applications, multiplayer backends, and game development. The seven projects on this page are the current focus.
Indie Game Studio
Owned the multiplayer backend for a browser-based competitive game — networking, anti-cheat, matchmaking, and the web services around it.
Web Startup
Shipped customer-facing React/Node features end to end. Learned how to build things that survive real users and real traffic.
Self-Taught
Started with web development, got curious about how games synced state, and built the first ugly versions of code that eventually became real systems.
Let's talk
If you're building something ambitious — a real-time app, a game, a platform that needs to scale — I'd like to hear about it.
Reach me directly
I keep things simple. Discord is the fastest way to get a real response from a real person. Tell me what you're building and we'll figure out whether I'm the right fit.
Response time is usually within a day. If it's urgent, say so upfront.