Ike Lim← All projects

Case Study

Gossip with Go

A production-grade social forum - Go REST API, React PWA, sub-100ms reads.

Dec 2025 – Jan 2026

ARCHIVED
ReactTypeScriptReduxGoGinGORMPostgreSQLDocker

The problem

I wanted to build a production-grade social platform from scratch - not a toy CRUD app, but a forum with the interaction patterns of Instagram and Reddit: posts, topics, likes, reposts, follows and nested discussion, fast enough to feel native.

The approach

The backend is a Go + Gin REST API with 25+ endpoints in a strict three-layer architecture: HTTP handlers delegate to focused services - auth, posts, comments, likes, reposts, follows, notifications, email and content scoring - over GORM models. A dedicated scoring service ranks feed content algorithmically.

Reads are tuned with composite indexes and denormalisation for sub-100ms responses on Neon PostgreSQL. Auth uses JWTs in httpOnly cookies with refresh tokens, bcrypt hashing, rate limiting and CORS/XSS protection; SMTP handles email verification and password resets.

The React + TypeScript frontend uses Redux Toolkit and TailwindCSS, and ships as an installable PWA with offline access to cached content.

Diagram of the three-layer Go REST API - HTTP handlers delegating to focused services over GORM models
Diagram of the three-layer Go REST API - HTTP handlers delegating to focused services over GORM models

The outcome

A deployed, working forum - frontend on Vercel, Dockerised backend on Fly.io, media on Cloudinary - supporting two-level nested comments, multi-entity follows, topic-based browsing and notifications.

View the demo here →

Learnings

This was my first Go project. I learned the language, the JWT auth lifecycle and deployment architecture as I built - using AI deliberately as a study aid to compare deployment options and review complex logic for edge cases, while writing the code myself.