Back to Blog
Full Stack Real-Time Self-Hosted 2026

CampusBay: Building a Production Student Marketplace, Solo

Five containerized services, real-time messaging, an escrow-style wallet, revocable authentication, and SSL: designed, built, and hosted entirely by myself. This is the full story of how every hard part fits together.

The Problem

Trade between students on campus is a mess. It lives in overflowing WhatsApp groups and Telegram channels where listings scroll past in minutes, nobody knows if the seller is trustworthy, and payment is an awkward manual bank transfer with zero protection. If you pay and the item never shows up, you have no recourse and no record.

I could have built a pretty listings page and called it a marketplace. Plenty of portfolio projects stop there. But a listings page isn't the hard part, the hard part is everything that makes a marketplace trustworthy: knowing who you're talking to, talking to them in real time, paying safely, and having the system hold a consistent record of money even when things go wrong.

I set myself one rule: build the parts a real marketplace company has to solve, not the parts that are easy to demo. Real-time messaging, a payment flow that can't be faked, authentication that can actually revoke a session, a wallet that never loses track of a cent, and host all of it myself.

The "host it myself" constraint was deliberate. Managed platforms hide the parts I most wanted to learn: SSL, reverse proxying, container networking, what actually happens when one service falls over at 2am. If something breaks, it's mine to diagnose and fix, and that's where the learning lives.

Over the next sessions I'll walk through each layer in the order I actually had to think about it: why five services, how the data is modeled, the real-time layer, authentication, payments, the wallet ledger, deployment, and the failure modes that taught me the most.

What It Looks Like
The landing page — where the marketplace pitch happens
The landing page — where the marketplace pitch happens
Listing an item: photos, category, faculty, condition, price
Listing an item: photos, category, faculty, condition, price
Buyer–seller messaging over the Socket.IO layer
Buyer–seller messaging over the Socket.IO layer
Cart, and the entry point into the escrow wallet
Cart, and the entry point into the escrow wallet
The three-step explainer for first-time visitors
The three-step explainer for first-time visitors
End-to-end walkthrough of the live marketplace
On the blog
This is the short version

The full write-up — architecture decisions, the parts that broke, and what I'd do differently — lives on ThoughtLog, my personal blog.

Read the full post on ThoughtLog