/work/yappify

Yappify

A realtime chat application built on Go and Gorilla WebSockets. Open a tab, type, watch other people type back.

Status
Archived · 2024
Role
Solo
Stack
Go · Gorilla · WebSockets

Yappify started as the smallest chat app I could write end to end — open a tab, type, see other people typing, no signup, no friction. The interesting half was never the UI; it was making the WebSocket layer behave when more than three people showed up at once.

/what-it-was

A single-page chat client talking to a Go server over Gorilla WebSockets. Rooms were ephemeral, messages were not persisted past the session — the goal was to make the network plumbing the whole product.

The server kept a hub-and-clients model: one goroutine per connected client reading from the socket, one fan-out goroutine pushing messages to everyone in the room. Backpressure was handled with buffered channels; slow clients dropped before they could stall the hub.

/what-i-took-from-it

Go's concurrency model is much more pleasant than the textbook makes it sound. Channels are the right abstraction for fan-out, but the rate-limiting and dead-client cleanup live outside them — and that's where most of the bugs were.

Project is no longer maintained.

/links