A browser-to-desktop multiplayer world inspired by Habbo Hotel: a cryptographically signed desktop client, a distributed real-time backend with a three-way trust model, and an AI pipeline that generates the art. Designed, built, and shipped by one person.
Web sign-up
Angular
→
Signed launcher
Wails · Go + Svelte
→
Live world
Java Swing
Secure desktop delivery
The client cannot simply be downloaded and run. It has to prove who you are, and that it has not been tampered with.
Authentication: browser SSO to in-game session
A one-time SSO token from the deep link is exchanged for a rotating 30-day refresh token (DPAPI-encrypted on disk) and a short-lived access JWT. Hitting Play trades that for a 60-second Ed25519 game JWT, handed to the Java client over stdin so it never shows up in a process listing. Four token types, each scoped to the narrowest lifetime its job allows.
Delivery: signed manifest to atomic install
The package streams from CloudFront as a resumable download with a running SHA-256 check, then is verified against an Ed25519-signed manifest: kid, signature, version, hash and size. These five invariants make downgrade and key-swap attacks fail closed. Only then does it extract (guarded against zip-slip and zip-bombs) and atomically install, keeping the last build for rollback.
Three callers, three trust mechanisms. The backend never treats them the same.
One backend, three front doors
The web reads with a 24-hour session JWT; the game client reads directly with its 60-second game JWT, checked at the backend and again locally by the game server at join. Writes (trades, inventory, credits) come only from the game server, HMAC-signed with a 30-second replay window, so a patched client can't forge state. Live movement and chat run on a custom line-based TCP protocol; Kafka carries a fire-and-forget trade audit trail, Redis caches the profile page, and STOMP pushes room events to the browser.
Java · Spring Boot · MySQL · Kafka · Redis · STOMP
AI content pipeline
All the art that fills the world comes from the project's own pipeline. It is one of the three core systems, not an add-on.
Pipeline
Prompt to placed item
A text prompt becomes catalog-ready furniture: image generation (FLUX / nano-banana), two-to-four chained isometric angles for view consistency, then a review step that sets tile size, category, collision, wall-or-floor placement and per-angle offsets before it goes live in-world.
A headless, LLM-drivable pixel-art editor with around 50 MCP tools for layers, frames, drawing and export. Its batch recolor generates every avatar combination (hair, eyes, top, trousers, shoes, skin) with perceptual matching that preserves shading and anti-aliasing. Open-source; I'm a contributor.
TypeScript · Model Context Protocol
Built with
Frontend
AngularNgRxTypeScript
Desktop
WailsGoSvelteJava Swing
Backend
Spring BootHibernateMySQLRedisKafkaSTOMP
Cloud & security
AWS S3CloudFrontKMSEd25519HMACJWT
AI
MCPFLUXPiskel
Role, solo: product, art direction, full-stack, desktop client, cloud infrastructure, and the AI content pipeline.